Drupal 7 jQuery поведения с несколькими js-файлами
У меня есть основной вопрос, но я не нашел никакого удовлетворительного ответа. Должен признать, я не очень понял концепцию поведения. Я понял, что это более jQuery(document).ready
потому что он может быть запущен многократно (например, для обновления AJAX). Но он работает не всегда так, как требуется, особенно при работе с несколькими файлами jQuery.
Моя конкретная проблема: у меня есть несколько файлов js, прикрепленных к моему сайту drupal. Некоторые прикреплены к формам, некоторые прикреплены через drupal_add_js в модуле, некоторые прикреплены к пользовательскому блоку и т. Д. Все файлы js выглядят следующим образом:
(function ($) {
Drupal.behaviors.THEMENAME = {
attach: function(context, settings){
/* CODE */
}
};
}(jQuery));
Все работает, за исключением одного файла js, не на определенных страницах (на большинстве это работает, но не на страницах узлов [структурировано с помощью модуля страницы]).
Но я не совсем уверен, как назвать поведение. Должны ли они иметь одно и то же имя или разные? Когда я изменяю имя (THEMENAME
) и дать уникальные имена (например, соответствующие модули), поскольку большинство js больше не работают, но то, которое работало только на определенных страницах, теперь работает на каждой странице.
Как мне это назвать? Разные js не имеют зависимостей, это в основном простые манипуляции с show, hide, hide и css.
1 ответ
Поведения - это объекты JavaScript. Если вы называете все свое поведение одинаковым, вы переопределяете один и тот же объект снова и снова, и будут выполняться только последние загруженные поведения. Вам нужно найти уникальное имя для каждого поведения. Имя может быть любым. Моя рекомендация будет заключаться в том, чтобы поставить перед ними префикс вашей темы или имени модуля, а затем использовать короткое имя, которое лучше всего описывает их действия.