用"JQuery"替换"$"(美元符号)

Acu*_*ubi 51 jquery

第一个片段无法正常工作.但是,当用jQuery替换所有$(美元符号)时它会开始工作(参见第二个片段).但我真的不明白为什么?任何人都可以向我解释这个吗?非常感谢!

第一个片段

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");
                    });

                });
Run Code Online (Sandbox Code Playgroud)

第二个片段

        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");
                });

            });
Run Code Online (Sandbox Code Playgroud)

Nic*_*tti 96

这是因为jQuery.noConflict()"释放""$"与jQuery相关联.通常在您的代码中,您可以使用$代替"jQuery".如果你使用noConflict()你不能再这样做了,所以你必须用"jQuery"替换每个"$"; .

许多JavaScript库使用$作为函数或变量名,就像jQuery一样.在jQuery的情况下,$只是jQuery的别名,因此所有功能都可以在不使用$的情况下使用.如果我们需要在jQuery旁边使用另一个JavaScript库,我们可以通过调用$ .noConflict()将$的控制权返回给另一个库:

您还可以创建一个全新的别名来使用

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");
        });

    });
Run Code Online (Sandbox Code Playgroud)

  • 这样做,只是想指出传递给`ready`回调的第一个参数是jQuery对象,所以你可以做`.ready(function($){`然后在函数内部使用`$`,因为你不需要使用外部的$ for stuff. (14认同)

sha*_*hat 11

调用noConflict()会删除$和jQuery函数之间的关联.这样您就可以使用另一个JavaScript库,该库也缩短为$而不会发生冲突.