jQuery no conflict

时间:2015-07-02 作者:Adrian

我只想一劳永逸地弄清楚Wordpress中的jQuery,因为我永远都不记得从一个项目到下一个项目应该怎么做。

我正在谈论的一个特别的例子是flexslider。在我现在工作的网站上,我尝试了:

jQuery(document).ready(function($) {
  $(\'.flexslider\').flexslider({
    slideshow: true,
    animationSpeed: 400,
    initDelay: 100,
    animation: "slide",
    animationLoop: true,
    itemWidth: 258,
    itemMargin: 26
  });
});
这在Opera中有效,但在Firefox中无效,并且已经尝试过:

jQuery(document).ready(function($) {
  jQuery(\'.flexslider\').flexslider({
    slideshow: true,
    animationSpeed: 400,
    initDelay: 100,
    animation: "slide",
    animationLoop: true,
    itemWidth: 258,
    itemMargin: 26
  });
});
这适用于Firefox,但不适用于Opera,其他浏览器尚未测试。

要在所有浏览器中工作,正确的方法是什么?

谢谢

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

I prefer this:

(function($){
    "use strict";
    $(document).ready(function(){
      $(\'.flexslider\').flexslider({
         slideshow: true,
         animationSpeed: 400,
         initDelay: 100,
         animation: "slide",
         animationLoop: true,
         itemWidth: 258,
         itemMargin: 26
      });
    });
})(this.jQuery);
SO网友:cjbj

要使jQuery在noconflict模式下工作,您需要将所有函数包装在js文件中,如下所示:

jQuery(window).ready(function( $ ) { Your functions here });
现在可以像往常一样使用$选择器:

$(window).load(function(){ Stuff here });

$(document).ready(function(){ Stuff here });
我通常使用前者,因为文档。ready有时与Wordpress主题修饰符冲突(不知道为什么)。

SO网友:Adrian

要回答这个问题,更多的是关于如何调用jQuery,而不是如何调用函数。

我刚刚将jQuery的直接链接更改为:

if (!is_admin()) add_action("wp_enqueue_scripts", "my_jquery_enqueue", 11);
function my_jquery_enqueue() {
   wp_deregister_script(\'jquery\');
   wp_register_script(\'jquery\', "http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js", false, null);
   wp_enqueue_script(\'jquery\');
}
这是采取frmo CSS技巧并在函数中发布的。php,现在可以在所有浏览器上执行以下操作:

jQuery(document).ready(function($) {
  $(\'.flexslider\').flexslider({
    slideshow: true,
    animationSpeed: 400,
    initDelay: 100,
    animation: "slide",
    animationLoop: true,
    itemWidth: 258,
    itemMargin: 26
  });
});

结束