0

可能重复:
您将如何比较 jQuery 对象?

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

var curPin;

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

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

4

4 回答 4

3

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

于 2012-04-23T15:17:21.990 回答
1

您不是在比较元素,而是 jQuery 对象,并且 jQuery 对象总是被认为是不同的,即使它们包含完全相同的元素。

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

var curPin;

$(".pin").click(function() {
    var $pin = $(this);
    if (curPin.is(this)) {
        console.log("true");
    } else {
        curPin = $pin;
        console.log("false");
    }
}
于 2012-04-23T15:10:20.203 回答
1

只需比较 DOM 元素:

if(curPin.get(0) == $pin.get(0)) {
    // do something
}
于 2012-04-23T15:16:06.047 回答
0

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

var curPin;  

$('.pin').click(function(){   
  var $pin = $(this).attr('id');  
  if (curPin == $pin)
  {     
    console.log('true');   
  } 
  else 
  {     
    curPin = $pin;     
    console.log('false');   
  } 
} 
于 2012-04-23T15:11:59.280 回答