jQuery - DOM元素未被识别为相等

时间:2012-04-23 15:05:14

标签: javascript jquery

  

可能重复:
  How would you compare jQuery objects?

我正在使用jQuery将积极点击的项目存储在项目列表中。我想检测新点击的项目是否与之前点击的项目相同,以切换支持div的可见性。我的代码如下所示:

var curPin;

$('.pin').click(function(){
  var $pin = $(this);
  if (curPin == $pin){
    console.log('true');
  } else {
    curPin = $pin;
    console.log('false');
  }
}

为什么这不平等?有更好的方法吗?

4 个答案:

答案 0 :(得分:3)

使用if ($(this).is(curPin))检查元素是否相同。

答案 1 :(得分:1)

您不会比较元素,但jQuery对象和jQuery对象始终被视为不同,即使它们包含完全相同的元素。

比较DOM元素本身确实可以解决您的问题。正如Esailija所建议的那样,您可以使用is()方法来检查curPin中存储的jQuery对象是否包含当前元素:

var curPin;

$(".pin").click(function() {
    var $pin = $(this);
    if (curPin.is(this)) {
        console.log("true");
    } else {
        curPin = $pin;
        console.log("false");
    }
}

答案 2 :(得分:1)

只需比较DOM元素:

if(curPin.get(0) == $pin.get(0)) {
    // do something
}

答案 3 :(得分:0)

如果你的元素有一个id,你可以用它来比较 -

var curPin;  

$('.pin').click(function(){   
  var $pin = $(this).attr('id');  
  if (curPin == $pin)
  {     
    console.log('true');   
  } 
  else 
  {     
    curPin = $pin;     
    console.log('false');   
  } 
}