Що робити, якщо скрипт на jQuery, знайдений вами в інтернеті не працює при його вставці в Drupal. У чому проблема і як її вирішити?
При написанні коду найкраща практика - це обернути свій код в «замикання» (обгортку, хз як назвати). «Замикання» - це не більше ніж функція, яка дозволяє обмежити область дії змінних, щоб випадково не перезаписати глобальних змінних.
// Оголошуємо нову функцію.
# 40; function # 40; # 41; # 123;
// Функції оголошені тут не впливатимуть на задані глобально.
var window = "Whoops, at least I only broke my code." ;
console. log # 40; window # 41; ;
// Додатковий набір дужках каже запустити функцію, яку ми тільки що визначили.
// Наш безглуздий код всередині замикання не впливає на все інше.
console. log # 40; window # 41; ;
Вирішити це можна наприклад ось так
// Ми визначаємо функцію, яка використовує один параметр з ім'ям $.
# 40; function # 40; $ # 41; # 123;
// Використовуємо jQuery з скоращеніем:
// Тут ми відразу викликаємо функцію з JQuery як параметр.
Зверніть увагу, що є два прийнятних синтаксису для закриття: дужка, яка закриває першу дужку може йти як до, так і після (JQuery).
Функція .ready () так само має можливість задавати псевдонім об'єкту jQuery:
jQuery # 40; document # 41 ;. ready # 40; function # 40; $ # 41; # 123;
// Code that uses jQuery's $ can follow here.
В Drupal 7 jQuery.noConflict () викликається, щоб зробити його простіше у використанні інших бібліотек JS, так що вам або доведеться вводити JQuery () або у вас буде замикання перейменовувати його для вас
Але, є ще один універсальний метод, що дозволяє уникнути цих нудних проблем.
Він зробить всю брудну роботу за вас, код буде працювати, якщо його просто скопіювати із прикладів, взятих в інтернеті. Перевірив, все пучком :-)