我正在尝试将我在jQuery 1.6中编写的幻灯片后端移植到Drupal中,你可能知道或者可能不知道它现在被“锁定”到jQuery 1.3(我知道,它是迟钝的)。
我遇到了范围问题,因为jQuery 1.3的$(this)
模型不像现代版本那样强大或有用。
以下是破解的代码:
var $controls = $('a.controls', $frame);
$controls.click( function() {
var $clicked = $(this);
// ...
}
a.controls
表达式会按预期在$controls
内生成两个对象的集合。但是当jQuery 1.3鼓励$(this)
赋值时,它会抛出以下错误:
this [0] .ownerDocument为null
有谁知道为什么会这样做,以及我如何解决或解决它?
答案 0 :(得分:0)
这可能不是错误发生的地方,this
上下文在1.3中的事件回调与最新版本中的相同。
示例:http://jsfiddle.net/hPfZH/2/
$frame
上下文是否正确? $controls
上的活动?答案 1 :(得分:0)
我认为这样做的唯一方法是使用jquery_update模块进行小规模的操作。您需要将sites / all / modules / jquery_update / replace中的jquery.min.js(或jquery.js,如果您没有使用最小化版本)文件替换为最新的jQuery版本,然后对{{进行更改1}}文件(第59行):
jquery.module
这基本上会告诉jquery_update只替换非管理页面和非批处理页面上的javascript,这应该可以满足您的需要。根据您的需要,您可能需要在该检查中添加其他路径。
我没有测试过这个,但理论上它会起作用,遗憾的是我无法评论AHAH(Drupal在AJAX框架上的跛脚尝试)是否能在非管理页面上使用更高版本的jQuery。 / p>
希望你对此进行排序这是一个非常烦人的问题: - )
答案 2 :(得分:-1)
这可能无法回答问题,但可能会帮助您解决问题。
使用drupal模块jquery update,您可以在drupal中选择jquery版本。