jQuery.noConflict以及如何使用它

时间:2012-01-23 15:34:30

标签: jquery

我尝试使用jQuery.noConflict()但是在window.load函数中我得到一个“$ is not a function”错误。

我的代码:

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而不是'$'它可以正常工作,但是可以继续使用'$'吗? 谁知道/明白这有什么问题?
谢谢!

2 个答案:

答案 0 :(得分:12)

代码的第一部分有效,因为jQuery的$对象总是传递给ready处理程序。但是,相同的行为不适用于load处理程序。

如果您不想在$处理程序的正文中用jQuery替换load,则可以在闭包中捕获该变量:

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

或者,您可以在load处理程序中注册ready处理程序,其中$已正确绑定。

答案 1 :(得分:3)

如果您使用jQuery.noConflict(),则不再使用$来使用jQuery。

您必须使用jQuery()代替$()

doc中所述:

  

许多JavaScript库只使用$作为函数或变量名   就像jQuery一样。在jQuery的例子中,$只是jQuery的别名,所以   无需使用$即可使用所有功能。如果我们需要使用   另一个JavaScript库和jQuery一起,我们可以返回控件   $通过调用$ .noConflict()

返回到其他库

Thansk发表评论。

如果您想使用$参数