【问题标题】:Replace "$"(dollar Sign) with "JQuery"将“$”(美元符号)替换为“JQuery”
【发布时间】:2011-07-19 11:23:41
【问题描述】:

第一个 sn-p 不起作用。但是,当用 jQuery 替换所有 $(美元符号)时,它开始工作(参见 2nd sn-p)。但我真的不明白为什么?谁能给我解释一下?非常感谢!

第一个片段

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

                });

第二个片段

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

            });

【问题讨论】:

    标签: jquery


    【解决方案1】:

    这是因为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");
            });
    
        });
    

    【讨论】:

    • 这行得通,只是想指出传递给ready回调的第一个参数是jQuery对象,所以你可以在函数内部使用.ready(function($){然后使用$,如只要您不需要将外部 $ 用于东西即可。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-15
      • 1970-01-01
      • 2021-07-13
      • 2010-12-14
      • 2016-02-13
      • 2013-01-11
      • 2011-11-07
      • 2011-09-07
      相关资源
      最近更新 更多