检查jQuery集合中是否存在元素

时间:2015-12-05 05:46:07

标签: javascript jquery html

让我说我有这个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的正确方法是什么?

Here is a jsFiddle

3 个答案:

答案 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)); 
    });

jsfiddle