让我说我有这个HTML:
<div class="test"></div>
<div class="test"></div>
<div class="test" id="target"></div>
我的代码中的某个地方我打电话:
var $divs = $('.test');
稍后,我打电话给:
var $target =$('#target');
现在,我想检查一下$target
是否$divs
我希望下面的内容在第3次迭代中记录true
,但我得到false
3次:
var $divs = $('.test');
var $target =$('#target');
console.log($target);
$divs.each(function(){
console.log($(this));
console.log($(this) == $target); // expected true on 3rd iteration
});
看着控制台。很明显,为什么这会返回错误。
检查$divs
是否包含$target
的正确方法是什么?
答案 0 :(得分:1)
您的条件返回false
,因为对象不等于JavaScript中的另一个对象。举个例子:
$(window) !== $(window)
这是因为每次调用jQuery构造函数时都会创建一个 new 对象。
在您的情况下,如果您从集合中获取包装对象,则您的条件将返回true
作为目标元素:
$target.get(0) === this;
答案 1 :(得分:0)
尝试按ID进行检查,
$divs.each(function(){
console.log($(this));
console.log($(this).attr("id") == $target.attr("id"));
});
答案 2 :(得分:0)
将console.log($(this) == $target)
更改为此console.log($(this).is($target))
。
要在jquery中对两个对象进行comap,请使用(a.is(b))
,即.is()
函数
var $divs = $('.test');
var $target =$('#target');
console.log($target);
$divs.each(function(){
console.log($(this));
console.log($(this).is($target));
});