Работа с библиотекой, которая зависит от jQuery
Я собираюсь использовать pikachoose.com библиотека с wordpress. Однако эта библиотека ссылается на jQuery и использует краткую форму (с использованием $). В документации WordPress говорится, что короткая форма не должна использоваться, и вместо этого я должен использовать длинную форму для использования функциональности jQuery и предотвращения конфликтов.
Моя проблема в том, что библиотека/объект, который я загружаю, написан в краткой форме. Итак, как я могу использовать его с WordPress. Документация в WordPress утверждает, что я должен обернуть его так:
jQuery(document).ready(function($) {
// Inside of this function, $() will work as an alias for jQuery()
// and other libraries also using $ will not be accessible under this shortcut
});
Или вот так:
(function($) {
// Inside of this function, $() will work as an alias for jQuery()
// and other libraries also using $ will not be accessible under this shortcut
})(jQuery);
Однако неясно, как включить внешний файл. Пожалуйста, объясните на примере. Спасибо.
1 answers
Прежде всего, если вы исследуете исходный код Pikachoose, то вы увидите, что он обертывает код с самозапускающимся замыканием:
(function($) {
// ...
})(jQuery);
Это означает, что они правильно используют краткую форму. В то же время это означает, что все, что вам нужно сделать, это поставить в очередь скрипты jQuery и PikaChoose, и все будет работать нормально. Вы можете сделать это, написав свой собственный крючок для wp_enqueue_scripts
действия:
add_action( 'wp_enqueue_scripts', 'wpse8170_enqueue_scripts' );
function wpse8170_enqueue_scripts() {
wp_register_script( 'pikachoose', '/path/to/pikachoose.js', array( 'jquery' ), null, true ); // register pikachoose script
wp_enqueue_script( 'wpse8170-my-custom-js', '/path/to/my.js', array( 'pikachoose' ), null, true ); // enqueue my.js and pikachoose scripts
}
Обратите внимание: не ставьте в очередь сторонние библиотеки, просто зарегистрируйте их и используйте как зависимая библиотека, когда вы ставите в очередь свой пользовательский файл javascript.
Ваш my.js должно выглядеть так:
(function($) {
$(document).ready(function() {
$("#divID").PikaChoose();
});
})(jQuery);