如何使用jQuery 1.8.3创建选项卡(jQuery UI)

时间:2013-02-15 21:25:03

标签: jquery jquery-1.4 jquery-1.8

我曾经在使用jQuery 1.4.4时通过调用$(element).tabs(...)来创建标签。现在,使用jQuery 1.8.3,我收到一个错误:

  

未捕获的TypeError:对象#没有方法'标签'

为什么会出现这样的错误?唯一的区别是jQuery的版本(甚至不是jQuery UI,只是jQuery)。

NB我正在使用jQuery-UI版本1.10.0

1 个答案:

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

现在版本保持正确。

我无法正确解释这种行为,所以也许有人可以根据这些调查结果得出更好的答案......另一个问题是我的原始问题毕竟不是重点......不太确定该怎么做这里是为了使其与其他用户相关。