考虑一下:
<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对象?
答案 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)
i1
和i2
是jQuery构造函数创建的不同对象。如果您愿意,可以比较您内部的元素。
i1[0] == i2[0]
。
您可以创建一个函数来迭代整个元素进行比较,并确保元素匹配。
您也可以执行.is('.test')
,但您必须始终指定选择器。
答案 3 :(得分:0)
它们并非完全相同。您正在比较相同的元素,但它们仍然不同。
.is()
调用也必须失败,因为元素i1
与i2
不匹配。您可以使用.is()
来检查类名称,例如:
i1.is('.text') === true
<强>更新强>
因为您的评论http://www.jsfiddle.net/htcxT/
您甚至可能正在寻找.unique()
jQuery方法,该方法可从数组中删除重复的DOM元素:.unique()