2011-07-19 26 views
49

1. snippet çalışmıyordu. Ancak, $ (dolar işareti) jQuery (2. snippet'e bakın) ile değiştirilirken çalışmaya başlar. Ama neden gerçekten anlamıyorum? Bunu bana açıklayan var mı? Çok teşekkürler!

1 Pasaj

jQuery.noConflict(); 
       $(document).ready(function(){  
        $("#insideTable > tbody > tr:odd").addClass("odd"); 
        $("#insideTable > tbody > tr:not(.odd)").hide(); 
        $("#insideTable > tbody > tr:odd").show(); 
        $("#insideTable > tbody > tr.odd").click(function(){ 
         $(this).next().toggle(); 
         $(this).find(".arrow").toggleClass("up"); 
        }); 

       }); 

2 Pasaj

 jQuery.noConflict(); 
     jQuery(document).ready(function(){ 

       jQuery("#insideTable > tbody > tr:odd").addClass("odd"); 
       jQuery("#insideTable > tbody > tr:not(.odd)").hide(); 
       jQuery("#insideTable > tbody > tr:odd").show(); 
       jQuery("#insideTable > tbody > tr.odd").click(function(){ 
        jQuery(this).next().toggle(); 
        jQuery(this).find(".arrow").toggleClass("up"); 
       }); 

      }); 

cevap

91

jQuery.noConflict() jQuery ile ilişkili olmaktan "$" "boşaltır" olmasıdır. Normalde kodunuzda "jQuery" için $ olarak kullanabilirsiniz. noConflict()'u kullanırsanız, artık bunu yapamazsınız ve böylece her "$" değerini "jQuery" ile değiştirmeniz gerekir; .

Birçok JavaScript kitaplığı, jQuery gibi sadece işlevini veya değişken adını kullanır. JQuery'nin durumunda, $ jQuery için bir takma addır, bu nedenle tüm işlevleri $ kullanmadan kullanılabilir. Biz jQuery yanında Başka bir JavaScript kütüphanesi kullanmanız gerekiyorsa, biz $ .noConflict() çağrısı ile geri diğer kütüphaneye $ kontrolünü döndürebilir:

ayrıca kullanmak tamamen yeni bir takma adı oluşturabilirsiniz

var myJqueryAlias = jQuery.noConflict(); 
myJqueryAlias(document).ready(function(){ 

     myJqueryAlias("#insideTable > tbody > tr:odd").addClass("odd"); 
     myJqueryAlias("#insideTable > tbody > tr:not(.odd)").hide(); 
     myJqueryAlias("#insideTable > tbody > tr:odd").show(); 
     myJqueryAlias("#insideTable > tbody > tr.odd").click(function(){ 
      myJqueryAlias(this).next().toggle(); 
      myJqueryAlias(this).find(".arrow").toggleClass("up"); 
     }); 

    }); 
+0

Bu cevap! – trusktr

+14

Bu çalışma, sadece 'hazır' geri çağrısına geçen ilk argümanın jQuery nesnesi olduğunu belirtmek ister, böylece '.ready (function ($) {' ve sonra '$' işlevini fonksiyonun içinde kullanabilirsiniz. Dış şeyler için kullanmanız gerekmediği sürece. – loganfsmyth

10

noConflict() yönteminin çağrılması, $ ve jQuery işlevi arasındaki ilişkiyi kaldırır. Böylelikle, çatışma olmadan $ da kısaltılan başka bir JavaScript kütüphanesi de kullanabilirsiniz.

İlgili konular