jQuery对象相等

jQuery对象相等

如何确定两个jQuery对象是否相等?我希望能够为特定的jQuery对象搜索数组。

$.inArray(jqobj, my_array);//-1    
alert($("#deviceTypeRoot") == $("#deviceTypeRoot"));//False
alert($("#deviceTypeRoot") === $("#deviceTypeRoot"));//False


白衣非少年
浏览 530回答 3
3回答

qq_笑_17

从jQuery 1.6开始,您可以使用.is..下面是一年多前的答案.。var&nbsp;a&nbsp;=&nbsp;$('#foo');var&nbsp;b&nbsp;=&nbsp;a;if&nbsp;(a.is(b))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;the&nbsp;same&nbsp;object!}如果您想知道两个变量是否实际上是同一个对象,例如:var&nbsp;a&nbsp;=&nbsp;$('#foo');var&nbsp;b&nbsp;=&nbsp;a;.然后你可以检查他们唯一的身份证每次创建新的jQuery对象时,都会得到一个id。if&nbsp;($.data(a)&nbsp;==&nbsp;$.data(b))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;the&nbsp;same&nbsp;object!}尽管如此,也可以通过一个简单的a === b,上面的内容至少可以告诉下一个开发人员您要测试的是什么。无论如何,这可能不是你想要的。如果要检查两个不同的jQuery对象是否包含相同的元素集,则可以使用以下命令:$.fn.equals&nbsp;=&nbsp;function(compareTo)&nbsp;{ &nbsp;&nbsp;if&nbsp;(!compareTo&nbsp;||&nbsp;this.length&nbsp;!=&nbsp;compareTo.length)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;} &nbsp;&nbsp;for&nbsp;(var&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;this.length;&nbsp;++i)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(this[i]&nbsp;!==&nbsp;compareTo[i])&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;} &nbsp;&nbsp;return&nbsp;true;};来源var&nbsp;a&nbsp;=&nbsp;$('p');var&nbsp;b&nbsp;=&nbsp;$('p');if&nbsp;(a.equals(b))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;same&nbsp;set}

catspeake

如果您仍然不知道,可以通过以下方法返回原始对象:alert($("#deviceTypeRoot")[0]&nbsp;==&nbsp;$("#deviceTypeRoot")[0]);&nbsp;//Truealert($("#deviceTypeRoot")[0]&nbsp;===&nbsp;$("#deviceTypeRoot")[0]);//True因为$("#deviceTypeRoot")还返回选择器选择的对象数组。

侃侃尔雅

这个$.fn.equals(...)解决方案可能是最干净和最优雅的。我试过像这样快速而肮脏的东西:JSON.stringify(a)&nbsp;==&nbsp;JSON.stringify(b)它可能很昂贵,但舒服的是它是隐式递归的,而优雅的解决方案则不是。只是我的两分钱。
打开App,查看更多内容
随时随地看视频慕课网APP