第一个代码片段不起作用。但是,当将所有$(美元符号)替换为jQuery(请参见第二个代码片段)时,它将开始工作。但我真的不明白为什么?有人能给我解释一下吗?非常感谢!
第1个代码片段
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");
});
});
发布于 2011-07-19 19:26:35
这是因为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");
});
});
发布于 2011-07-19 19:26:42
调用noConflict()将删除$和jQuery函数之间的关联。这是为了让您可以使用另一个JavaScript库,该库也可以在没有冲突的情况下缩写为$。
https://stackoverflow.com/questions/6746352
复制相似问题