两个jQuery的脚本之间的冲突

时间:2011-04-25 21:53:55

标签: jquery fancybox conflict buddypress

我是西班牙语(对不起我的英语),这是我第一次在这里写点什么。

经过数小时的调试和搜索,为什么Fancybox脚本无法正常工作,我搜索了我网站上两个脚本之间的冲突(现在处于维护模式)

我在我的网站上使用了一些脚本,但我可以肯定地说我在这两个脚本之间存在冲突:

http://www.planetdescargas.com/wp-content/themes/bigfoot/javascripts/jquery.mousewheel-3.0.4.pack.js    
http://www.planetdescargas.com/wp-content/themes/bigfoot/javascripts/jquery.fancybox-1.3.4.pack.js

http://www.planetdescargas.com/wp-content/plugins/buddypress/bp-themes/bp-default/_inc/global.js?ver=3.0.5

前两个脚本是jquery“fancybox”的插件,另一个是wordpress插件的主要javascript(Ajax):BuddyPress。

后者在fancybox中产生冲突。如果我删除BuddyPress的脚本,fancybox可以很好地工作,但如果没有,fancybox就不起作用。

BuddyPress'脚本,global.js在开头定义了一个变量,该变量是制作脚本的变量。 我尝试用这种方式定义它:

var jq = jQuery.noConflict();

但仍然没有工作。

有什么建议吗?

在Firebug控制台中我得到了这个:

c.easing[this.options.specialEasing && this.options.specialEasing[this.prop] || a] is not a function

[Detener en este error] e,this.options.orig [e]); this.options.c ... ++)ab || a.splice(b - ,1); a.length | |

的第143行
http://www.planetdescargas.com/wp-includes/js/jquery/jquery.js?ver=1.4.2

由于

3 个答案:

答案 0 :(得分:3)

只需使用这种方式。

打开wp-content/plugins/buddypress/bp-themes/bp-default/_inc/global.js

添加到顶部:

jQuery.noConflict (jquery_working =! html bind);

转到#1264 行 在下面添加:

;(function(jQuery){  ///Add this before start jQuery.easing.
  jQuery.easing.jswing=jQuery.easing.swing;jQuery.extend(jQuery.easing, {def:"easeOutQuad",swing:function(e,f,a,h,g){return ......
  // ...
})(jQuery); //Add this end of the call.

同样,您可以解决jQuery Cookie插件冲突错误。

答案 1 :(得分:1)

这不是你使用jQuery.noConflict()的方式。 noConflict()释放对$符号的控制权。从我从其他脚本中看到的,他们使用安全的方式((function($){ }(jQuery))),因此使用noConflicts()没有实际效果。

更改此

var jq = jQuery.noConflict ();

进入这个:

jQuery.noConflict ();
var jq = jQuery;

确保。

文档:http://api.jquery.com/jQuery.noConflict/

答案 2 :(得分:0)

我不知道出了什么问题,但我解决了这个问题。我在我的主题根目录中的functions.php中使用了这段代码:

    function fancybox_js() {
            wp_enqueue_script('jquery.fancybox', 'http://www.planetdescargas.com/wp-content/themes/bigfoot/javascripts/fancybox/jquery.fancybox-1.3.4.pack.js', array('jquery'), '1.3.4');
            wp_enqueue_script('jquery.easing', 'http://www.planetdescargas.com/wp-content/themes/bigfoot/javascripts/fancybox/jquery.easing-1.3.pack.js', array('jquery'), '1.3');
            wp_enqueue_script('jquery.mousewheel', 'http://www.planetdescargas.com/wp-content/themes/bigfoot/javascripts/fancybox/jquery.mousewheel-3.0.4.pack.js', array('jquery'), '3.0.4');
    }

add_action('wp_enqueue_scripts', 'fancybox_js', 999); 

我从名为Easy Fancybox的wordpress插件中获取了库,现在一切正常。谢谢!