将jQuery Arrays与多个DOM元素进行比较

时间:2010-07-27 06:15:14

标签: javascript jquery

考虑一下:

<div class="test">one</div>
<div class="test">two</div>

<script>

var i1 = $('.test');
var i2 = $('.test');

console.log( i1 == i2 );
console.log( i1 === i2 );
console.log( i1.is(i2) );

</script>

尽管它们包含相同的元素,但它们都打印 false 。有人会认为.is()可以用于比较,但它不会。你会如何比较两个jQuery对象?

4 个答案:

答案 0 :(得分:3)

我们可以使用.not()

var i1 = $('.test'); 
var i2 = $('.test');
alert(i1.not(i2).get().length == 0); //alerts true

答案 1 :(得分:2)

i1和i2不相等,因为它们是不同的对象。

听起来你想要的是找出两个jQuery对象中的元素是否是相同的元素。

您必须迭代这两个对象的数字内容并进行比较。

例如:

for (var i = i1.length; i--;) {
  if (!i2[i] || i2[i] !== i1[i]) {
    // jquery objects don't contain same elements
  }
}

答案 2 :(得分:1)

i1i2是jQuery构造函数创建的不同对象。如果您愿意,可以比较您内部的元素。

i1[0] == i2[0]

您可以创建一个函数来迭代整个元素进行比较,并确保元素匹配。

您也可以执行.is('.test'),但您必须始终指定选择器。

答案 3 :(得分:0)

它们并非完全相同。您正在比较相同的元素,但它们仍然不同。

.is()调用也必须失败,因为元素i1i2不匹配。您可以使用.is()来检查类名称,例如:

i1.is('.text') === true

<强>更新

因为您的评论http://www.jsfiddle.net/htcxT/

您甚至可能正在寻找.unique() jQuery方法,该方法可从数组中删除重复的DOM元素:.unique()