处理依赖于jQuery的库

时间:2013-08-07 作者:Greeso

我即将使用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 个回复
最合适的回答,由SO网友:Eugene Manuilov 整理而成

首先,如果你调查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);

结束