2011-05-21 74 views
0

我有一個需要使用mootools日曆的應用程序,但是,我爲我的主應用程序結構使用了jquery。Jquery和Mootools,.noConflict失敗

只要我有jQuery的mootools,既不工作,當我只有一個,他們工作正常。我做了一些研究,說我可以使用一種名爲.noconflict的方法,雖然我已經嘗試過,但還沒有得到它來解決我的問題。也許有人可以更好地向我解釋在哪裏做實際的.noconflict電話,也許幫助我得到這個工作。

謝謝!

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     var fixHeight = function() { 
       var gutter = 50; 
       var newHeight = $(window).height() - (gutter*2); 
       $('#container').height(newHeight); 
     } 
     $(function(){ 

      fixHeight(); 
      $('ul#nav li.item').each(function(index) { 
       if ($(this).attr("name") == "media") { 
        $(this).attr("id","active"); 
       } 
      }); 
      $('input').focus(function() { 
       $(this).attr("value",""); 
      }).blur(function() { 
       $(this).attr("value",$(this).attr("original-value")); 
      }); 

      $(window).resize(function() { 
       fixHeight(); 
      }).load(function() { 
       fixHeight(); 
      }); 

     }); 
    </script> 
    <script type="text/javascript" src="http://taptouchclick.com/js/mootools-1.2.4-core-yc.js"></script> 
    <script type="text/javascript"> 
     window.addEvent('domready', function(){ 
      var smoothCalendar = new SmoothCalendar("calendar"); 
     }); 
    </script> 

回答

1

你應該罰款,如果你簡單地調用:

jQuery.noConflict(); 

...包括MooTools的JS文件之前。

然後,您可以使用jQuery而不是$來使用jQuery函數。例如:

jQuery('.selector').hide(); // instead of $('.selector').hide(); 
+0

感謝,偉大的工作:d – willium 2011-05-21 07:11:37

2

肯定的,noConflict方法應該可行,但如果沒有,或者如果你想這樣做的另一種方式,你應該用參數被設置爲封裝在自調用函數的腳本主庫對象:

(function($){ 
    // al your jquery logic here 
    alert($ instanceof jQuery); 
})(jQuery) 

在這之後,你應該包括未來圖書館(在你的情況MooTools的),通常寫劇本,或者 - 很肯定 - 你可以封裝MooTools的邏輯函數,如好。

0

您也可以通過$回到通過DOM就緒事件:

$.noConflict(); 

// Non-jQuery code goes here 

jQuery(document).ready(function($) { 
    // You can now use the dollar sign safely inside of this function 
}