JQuery插件未捕获的TypeError:jQuery(...).lider不是函数

时间:2017-05-26 作者:urban-a

我为我的网页制作了一个插件。它可以作为一个独立的HTML文件工作。但当我将其用作wp插件时,我需要一个jQuery插件(引导滑块https://github.com/seiyria/bootstrap-slider) 在上面抛出此错误。

我包括了jquery和如下boostrap滑块插件:

wp_enqueue_script( \'child_jquery\',\'cdn URl\');
wp_enqueue_script(\'bootstrap-slider\',  \'CDN Url\');
并在我的代码中调用插件,以便:

jQuery("#m1,#m2,#m3,#m4,#m5,#m6,#m7,#m8,#m9,#m10,#m11,#m12").slider({
    reversed : true,
    tooltip: \'show\'
});
此调用位于document ready函数中:

jQuery(document).ready(function(){
我的怀疑是,在加载插件后,会出现进一步的jquery。因此,在源代码中,我已经(简化):

jquery.js
bootstrap-slider.js
jquery.js (an old one from wp)
我试着注销它,然后又把它排队了。但是如果我这样做了,插件仍然不能工作,另一个插件会抛出这个错误。

有什么想法吗?

提前感谢

2 个回复
最合适的回答,由SO网友:xvilo 整理而成

您可以尝试以下代码:

add_action("wp_enqueue_scripts", "my_jquery_enqueue", 11);
 function my_jquery_enqueue() {
   wp_deregister_script(\'jquery\');
   wp_register_script(\'jquery\', "//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js", false, null);
   wp_enqueue_script(\'jquery\');
   wp_enqueue_script(\'bootstrap-slider\',  \'CDN Url\', array(\'jquery\'), false, null);
}
我正在做的是注销WP jQuery脚本。然后,我将用CDN添加一个新的jQuery脚本。我将此脚本排队,然后将引导程序滑块脚本与jquery作为依赖项排队。这意味着jQuery将在引导滑块之前加载。

如果这对你有用,请告诉我。

SO网友:Terry Hyam

我的BxSlider插件也有类似的问题,现在已经用您的方法修复了(请参阅下面我的wcslider.php文件的摘录),非常感谢。

function wcslider_scripts() {
    wp_enqueue_style(\'bxslider\', WCSLIDER_PATH . \'/css/jquery.bxslider.min.css\');
    if(wp_script_is(\'jquery\', \'enqueued\')) {
        wp_deregister_script(\'jquery\');
        wp_register_script(\'jquery\', "//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js", false, null);
        wp_enqueue_script(\'bxsliderjs\', WCSLIDER_PATH . \'/js/jquery.bxslider.min.js\', array(\'jquery\'), false, null);
    } else {
        wp_enqueue_script(\'jquery\');
    }   wp_enqueue_script(\'bxsliderjs\', WCSLIDER_PATH . \'/js/jquery.bxslider.min.js\', array(\'jquery\'), false, null);
}
add_action(\'wp_enqueue_scripts\', \'wcslider_scripts\');

结束

相关推荐

WP中对jQuery加载函数的使用有限制吗?

我只是想加载一个简单的txt文件进行测试。jQuery(document).ready(function(){ jQuery(\"#buttonAjax\").click(function(){ jQuery(\"#demo\").load(\"demo.txt\"); alert(\'inside jquery\'); }); }); 代码可以工作,因为警报可以工作,但它不会加载演示。txt(He