2012-01-23 37 views
4

我嘗試使用jQuery.noConflict(),但在window.load函數中我得到一個「$不是函數」的錯誤。jQuery.noConflict以及如何使用它

我的代碼:

jQuery.noConflict(); 

jQuery(document).ready(function($) { 
    /** Dropdown Menu **/ 
    $('ul.tabs li:has(ul)').bind("click", function() { 
     $(this).find('ul').show('normal'); 
     //event.stopPropagation(); 
    }); 
    $('ul.tabs li').bind("mouseleave", function() { 
     $(this).find('ul').hide('normal'); 
     //event.stopPropagation(); 
    }); 
}); 

jQuery(window).load(function($) { 
    $('#container').fadeIn('normal'); 
}); 

如果我使用的,而不是「$」它工作正常,但有可能繼續使用「$」的jQuery?
任何人都知道/明白這有什麼問題?
謝謝!

回答

12

你的代碼的第一部分工作,因爲jQuery的$對象始終傳遞給ready處理程序。但是,相同的行爲不適用於load處理程序。

如果你不想在你load處理的機身採用jQuery更換$,你可以捕捉變量在封閉:

(function($) { 
    $(window).load(function() { 
     $("#container").fadeIn("normal"); 
    }); 
})(jQuery); 

或者,您也可以將您的ready處理程序中你load處理程序來註冊,其中$被正確綁定。

+0

是的,你是唯一一個正確的人! –

+0

你是對的我的朋友!正是我需要做的!非常感謝! – Philip

3

如果您使用jQuery.noConflict(),則$不再用於使用jQuery。

你必須使用jQuery()而不是$()

正如doc說:

許多JavaScript庫使用$作爲函數或變量名,只是 如jQuery不會。在jQuery的情況下,$是jQuery的別名,所以 所有功能都可以在不使用$的情況下使用。如果我們需要使用 另一個JavaScript庫jQuery的旁邊,我們可以()調用$ .noConflict


Thansk的評論返回 $控制權歸還給其他圖書館。

如果你想使用$參數

+0

如果您查看了代碼,您會看到$(document).ready()函數的$ as參數。在該功能內,您可以訪問$ ... –

+0

確實!感謝您的注意。 –

相關問題