2013-02-15 3 views
0

Я использовал для создания вкладок, вызывая $(element).tabs(...), когда я использовал jQuery 1.4.4. Теперь, с jQuery 1.8.3, я получаю сообщение об ошибке:Как создать вкладки (jQuery UI) с помощью jQuery 1.8.3

Uncaught TypeError: Object # has no method 'tabs'

Почему такая ошибка? Единственное отличие - это версия jQuery (даже не jQuery UI, а только jQuery).

NB Я использую JQuery-UI версии 1.10.0

+0

Вы уверены, что используете jQuery UI? – j08691

+0

Нет, это прекрасно работает. Что такое HTML-метка? И да, это делается точно так же. Также просто обратите внимание на то, что вы добавляете скрипты в правильном порядке. Я разобрал это однажды и получил такую ​​ошибку раньше. – defaultNINJA

+0

@ j08691 Да, на самом деле, если я включаю jQuery-1.4.4, а не jQuery-1.8.3, я не получаю никаких ошибок. – Shawn

ответ

0

Я нашел эту проблему, это было связано с противоречивыми версиями JQuery.

В основном Друпали нагрузки 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)) 

В моем коде ЗДЕСЬ раздел, если я пишу console.log($().jquery);, он печатает out 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 !!!! 
}); 

Теперь версия остается верной.

Я не могу правильно объяснить это поведение, так что, может быть, кто-то может придумать лучший ответ, основанный на этих выводах ... Другая проблема заключается в том, что мой первоначальный вопрос был рядом с точкой в ​​конце концов .. Не слишком уверен, что сделать это, чтобы сделать это релевантным для других пользователей.