Работа с библиотекой, которая зависит от 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);

Однако неясно, как включить внешний файл. Пожалуйста, объясните на примере. Спасибо.

Author: Eugene Manuilov, 2013-08-07

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);
 1
Author: Eugene Manuilov, 2013-08-07 10:32:57