第一个片段无效。但是,当用 jQuery 替换所有 $ (美元符号)时,它会开始工作(请参阅第2段)。但我真的不明白为什么?任何人都可以向我解释这个吗?非常感谢!
第一个代码段
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");
});
});
答案 0 :(得分:95)
这是因为jQuery.noConflict()
“释放”“$”与jQuery相关联。通常在您的代码中,您可以使用$代替“jQuery”。如果您使用noConflict()
,则不能再这样做了,所以你必须用“jQuery”替换每个“$”; 。
许多JavaScript库只使用$作为函数或变量名 就像jQuery一样。在jQuery的例子中,$只是jQuery的别名,所以 无需使用$即可使用所有功能。如果我们需要使用 另外一个JavaScript库和jQuery一起,我们可以返回控件 $通过调用$ .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");
});
});
答案 1 :(得分:11)
调用noConflict()会删除$和jQuery函数之间的关联。这样你就可以使用另一个JavaScript库,它也缩短为$而不会发生冲突。