我曾经在使用jQuery 1.4.4时通过调用$(element).tabs(...)
来创建标签。现在,使用jQuery 1.8.3,我收到一个错误:
未捕获的TypeError:对象#没有方法'标签'
为什么会出现这样的错误?唯一的区别是jQuery的版本(甚至不是jQuery UI,只是jQuery)。
NB我正在使用jQuery-UI版本1.10.0
答案 0 :(得分:0)
我发现了问题,这与jQuery的冲突版本有关。
基本上,drupal加载1.4.4,但我想使用1.8.3,所以我这样做:
var drupalsJQuery = jQuery;
// Load jq.1.8.3.js
// Load jq.ui.1.9.2.js
// MY CODE GOES HERE
$ = jQuery = drupalsJQuery; // Restore $ and jQuery to their original value (the jQuery object of Drupal's version of jQuery (1.4.4))
在MY CODE GOES HERE部分,如果我写console.log($().jquery);
,它打印出1.8.3
,这就是我想要的,所以我认为我的版本冲突结束了。我没有注意到的是它并不总是有效。以这个例子为例(仍然在MY CODE GOES HERE部分):
console.log($().jquery);
// Prints 1.8.3
$(document).ready(function () {
console.log($().jquery);
// Prints 1.4.4 !!!!
});
如您所见,版本在$(document).ready(function () { /*HERE*/ });
解决方案是将jQuery对象作为参数传递给匿名函数:
console.log($().jquery);
// Prints 1.8.3
$(document).ready(function ($) {
console.log($().jquery);
// Prints 1.8.3 !!!!
});
现在版本保持正确。
我无法正确解释这种行为,所以也许有人可以根据这些调查结果得出更好的答案......另一个问题是我的原始问题毕竟不是重点......不太确定该怎么做这里是为了使其与其他用户相关。