如何比较jquery中的两个元素[重复]

Posted

技术标签:

【中文标题】如何比较jquery中的两个元素[重复]【英文标题】:how to compare two elements in jquery [duplicate] 【发布时间】:2011-01-25 08:31:55 【问题描述】:
var a=$('#start > div:last-child');
var b=$('#start > div.live')[0];
alert(a==b)
alert(a==$(b))

它总是错误的。如何比较 jQuery 中的两个元素?

谢谢

【问题讨论】:

@e-motiv 的回答应该是被接受的 【参考方案1】:

为了记录,jQuery 有一个is() 函数:

a.is(b)

请注意,a 已经是一个 jQuery 实例。

【讨论】:

此方法还具有在“==”解决方案不适用的情况下工作的优势:$(event.target).is($("#a")) @DanielS 我认为这里不需要您添加的 2 "$(..)",因为在问题中 a 和 b 已经是 jquery 实例。我也只是为可能认为您必须加倍加载的其他人提及它。 @R-U-Bn 你是对的,感谢您指出这一点!对我来说,is() 是一个jQuery API function 更清楚。 我爱你!你拯救了这一天! 这应该是公认的答案。【参考方案2】:

您可以比较 DOM 元素。请记住,jQuery 选择器返回的数组在引用相等的意义上永远不会相等。

假设:

<div id="a" class="a"></div>

这个:

$('div.a')[0] == $('div#a')[0]

返回真。

【讨论】:

你测试过这个吗?由于.selector 属性的差异,我很确定它不会返回true。 是的,我已经在 IE6、FF 3.6 和 Chrome 4 上测试过这段代码。它在所有这些浏览器上都返回 true 查看@R-U-Bn 下面的评论。以下是诀窍:a.is(b) @mikeycgto 使用数组索引表示法与.get() 相同,而不是.eq()。它们非常不同。 这种比较不起作用。请看R-U-Bn的回答【参考方案3】:

每次调用 jQuery() 函数时,都会创建并返回一个新对象。所以即使是对同一个选择器的相等检查也会失败。

<div id="a">test</div>

$('#a') == $('#a') // false

生成的 jQuery 对象包含一个匹配元素数组,这些元素基本上是原生 DOM 对象,例如 htmlDivElement,它们始终引用同一个对象,因此您应该按照 Darin 的建议使用数组索引检查它们是否相等。

$('#a')[0] == $('#a')[0] // true

【讨论】:

感谢您解释为什么不能== 两个 jQuery 对象进行比较【参考方案4】:
a.is(b)

并检查它们是否不相等使用

!a.is(b)

至于

$b = $('#a')
....
$('#a')[0] == $b[0] // not always true

可能在第一次赋值后添加到元素或从元素中删除类

【讨论】:

a.not(b) 不是 a.is(b) 的倒数,而是从 a 中删除元素 b。而是使用 !a.is(b) 是的,你是对的!【参考方案5】:

在 jQuery 中测试“设置相等性”的随机 AirCoded 示例:

$.fn.isEqual = function($otherSet) 
  if (this === $otherSet) return true;
  if (this.length != $otherSet.length) return false;
  var ret = true;
  this.each(function(idx)  
    if (this !== $otherSet[idx]) 
       ret = false; return false;
    
  );
  return ret;
;

var a=$('#start > div:last-child');
var b=$('#start > div.live')[0];

console.log($(b).isEqual(a));

【讨论】:

【参考方案6】:

您从 jQuery 集合返回的集合结果不支持基于集合的比较。您可以一一比较各个成员,我知道在 jQuery 中没有这方面的实用程序。

【讨论】:

以上是关于如何比较jquery中的两个元素[重复]的主要内容,如果未能解决你的问题,请参考以下文章

.show() 和 .hide() 如何在 jquery 中工作 [重复]

如何在jQuery中的两个字符串之间获取url的特定部分[重复]

按块比较两个向量时如何避免重复

如何使用 Jquery 对每个匹配元素重复 IF 语句

如何防止 Jquery 可排序连接列表中的重复条目?

1.合并两个数组,并保持仍然有序。2.删除合并后数组中的重复元素