上次记录了下把Druapl6.x里jquery升级到最新版本的方法,不过那样做了之后,drupal里一个很实用的功能失效了,就是那个可以通过拖拽调整表格内记录顺序的功能。
今天看了下,似乎还是因为jquery api变动引起的,下面是修复的方法。
打开jquery_update模块里的replace/tabledrag.js 这个文件,第175行,是这样的代码:
if ($('td:first .indentation:last', item).after(handle).size()) {
在jquery 1.3里面 $('td:first .indentation:last', item) 如果返回的是空数组,那么连上后面的.after(handle).size()整个返回就会是0,那就不会进这个if了。
在做drupal模块开发的时候经常会用到jquery框架来实现一些ajax应用或js交互,目前稳定版的drupal 6.x内置的还是2年多前的1.2.6版,普通用下也没问题了,但是有时候要用到另外的一些基于jquery的js程序,有些用到了新的jquery api,已经和老的jquery版本不兼容了。
drupal他自己的一些js也都是基于jquery写的,如果直接用新的jquery替换他内置的,会造成drupal的js无法正常使用,虽然有jquery_update模块,但是也只升级到了1.3.2,现在我要用个jsTree,必须要用1.4.2才行,直接替换jquery_update里的jquery也不成。
最后找到个方法,他提到了2个补丁,分别修改了drupal的common.inc和jquery_update的一些代码,我尝试了一下,还真可以用。