0

I used to create tabs by calling $(element).tabs(...) when I was using jQuery 1.4.4. Now, with jQuery 1.8.3, I get an error:

Uncaught TypeError: Object # has no method 'tabs'

Why such an error? The only difference is the version of jQuery (not even jQuery UI, just jQuery).

NB I'm using jQuery-UI version 1.10.0

4

1 回答 1

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,这就是我想要的,所以我认为我的版本冲突已经结束。我没有注意到的是它并不总是有效。举这个例子(仍然在我的代码放在这里部分):

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 !!!!
});

现在版本保持正确。

我无法正确解释这种行为,所以也许有人可以根据这些发现提出更好的答案......另一个问题是我最初的问题毕竟是离题的......不太确定在这里做什么使其与其他用户相关。

于 2013-02-20T17:10:53.960 回答