2011-09-12 153 views
2

我一直在試圖使2個腳本(1 mootol和1 jquery)在同一頁工作無濟於事。研究了許多論壇和所有,但我仍然不能使2工作同時進行。Jquery-Mootools衝突

這是怎麼看我的頭:

<script type="text/javascript" src="<?php bloginfo('url'); ?>/wp-content/plugins/buddypress/bp-themes/bp-default/js/jquery-1.4.2.min.js"></script> 
<script type="text/javascript"> 
    jQuery.noConflict(); 
$(document).ready(function() { 
     var hide = false; 
    $("#posts-menu, .submenu").hover(function(){ 
     if (hide) clearTimeout(hide); 
     $(".submenu").fadeIn(); 
    }, function() { 
     hide = setTimeout(function() { 
      $(".submenu").fadeOut("slow"); 
     }, 250); 
    }); 

})(jQuery); 
    </script>  
<script type="text/javascript" src="<?php bloginfo('url'); ?>/wp-content/plugins/buddypress/bp-themes/bp-default/js/mootools-core-1.3.2.js"></script> 
<script type="text/javascript" src="<?php bloginfo('url'); ?>/wp-content/plugins/buddypress/bp-themes/bp-default/js/mootools-more-1.3.1.1.js"></script> 
<script type="text/javascript" src="<?php bloginfo('url'); ?>/wp-content/plugins/buddypress/bp-themes/bp-default/js/wall.js"></script> 
<script type="text/javascript" src="<?php bloginfo('url'); ?>/wp-content/plugins/buddypress/bp-themes/bp-default/js/wall-lide.js"></script> 

<script type="text/javascript"> 
<!-- 

window.addEvent('domready',function(){ 


    // -- horizontal 
    var myHorizontalSlide = new Fx.Slide('login-welcome-div-slide', {mode: 'vertical'}); 


    $('slideout').addEvent('click', function(event){ 
     event.stop(); 
     myHorizontalSlide.slideOut(); 
    }); 


}); 

// --> 
</script> 

我管理MooTools的腳本,即使那裏有一個jquery.js和電話... 你可以看到,我已經在第三使用jQuery.noConflict();工作線..

問題是,如果jquery.noconflict存在,但jQuery腳本不起作用,mootool腳本工作!現在,如果從現在開始移除jquery.noconflict,那麼jquery腳本就可以工作,但不能使用mootool腳本..我不能讓其中的2個工作!

任何形式的幫助將不勝感激..

回答

1

問題是你沒有在匿名函數中包含jQuery代碼。試試這個:

(function($){ 
    // inside here $ will always mean jQuery 
    $(document).ready(function() { 
     var hide = false; 
     $("#posts-menu, .submenu").hover(function(){ 
      if (hide) clearTimeout(hide); 
      $(".submenu").fadeIn(); 
     }, function() { 
      hide = setTimeout(function() { 
       $(".submenu").fadeOut("slow"); 
      }, 250); 
     }); 
    }); 
})(jQuery); 
+0

令人驚歎!這個工作!我很開心!原諒我..大聲笑!非常感謝你這樣做。^ _^ –

+0

@丹:很高興我幫了忙。隨意[接受答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235),這個問題被標記爲已解決。 – Shef

+0

哦,好的!完成了!我按了上面的按鈕,但它沒有工作至少15聲望,再次感謝! –

0

使用jQuery(區分大小寫),而不是$爲jQuery的部分。

2

當您在noConflict模式下運行時,不能使用$便利方法。您必須改用完整的表格jQuery

jQuery.noConflict(); 
// Do something with jQuery 
jQuery("div p").hide(); 
// Do something with another library's $() 
$("content").style.display = 'none'; 

請避免使用2個js庫,因爲它會增加你的頁面加載時間,而這又會影響到SEO(否定的)。

+0

看起來像WordPress給我。 – alex

+0

你寫了,手指移動比腦子快...但是我從來沒有看到使用2庫的點... – Ali

0

你正在破壞$

<script type="text/javascript"> 
    $.noConflict(); 
    jQuery(document).ready(function($) { 
    // Code that uses jQuery's $ can follow here. 
    }); 
    // Code that uses other library's $ can follow here. 
</script> 
+0

我試過這個..jquery的作品,但mootools doesnt ..我不能在這裏發佈的代碼,其太長了 –

0

你可以嘗試在MooTools庫之前包含jQuery庫。

document應該說明更好

1

從一個MooTools的點。

您在jQuery之後加入了MooTools。那很好。因爲(如果你不使用jQuery.noConflict),MooTools將會看到$已被其他人使用,並將保持原樣。

您將不得不在您的MooTools腳本中用document.id()替換$函數。

jQuery有這個noConflict模式。在使用它時,你必須用jQuery()替換jQuery中的$函數。

要麼替換出現次數,要麼使用匿名函數將腳本中的引用保留爲$,並使其成爲MooTools的document.id()或jQuery的jQuery()的別名。

(function($) { 
    // $ will refer to MooTools' document.id() in this anonymous function 
    // ... 
})(document.id); 

(function($) { 
    // $ will refer to jQuery's jQuery() in this anonymous function 
    // ... 
})(jQuery);