Javascript jQuery-未标识为相等的DOM元素
可能重复:Javascript jQuery-未标识为相等的DOM元素,javascript,jquery,Javascript,Jquery,可能重复: 我正在使用jQuery将主动单击的项存储在一个项列表中。我想检测新单击的项目是否与先前单击的项目相同,以切换支持div的可见性。我的代码如下所示: var curPin; $('.pin').click(function(){ var $pin = $(this); if (curPin == $pin){ console.log('true'); } else { curPin = $pin; console.log('false');
我正在使用jQuery将主动单击的项存储在一个项列表中。我想检测新单击的项目是否与先前单击的项目相同,以切换支持
div
的可见性。我的代码如下所示:
var curPin;
$('.pin').click(function(){
var $pin = $(this);
if (curPin == $pin){
console.log('true');
} else {
curPin = $pin;
console.log('false');
}
}
为什么这不是平等的呢?有更好的方法吗?您不是在比较元素,但是jQuery对象和jQuery对象总是被认为是不同的,即使它们包含完全相同的元素 比较DOM元素本身确实可以解决您的问题。根据Esailija的建议,您可以使用该方法检查存储在
curPin
中的jQuery对象是否包含当前元素:
var curPin;
$(".pin").click(function() {
var $pin = $(this);
if (curPin.is(this)) {
console.log("true");
} else {
curPin = $pin;
console.log("false");
}
}
您没有比较元素,但是jQuery对象和jQuery对象总是被认为是不同的,即使它们包含完全相同的元素 比较DOM元素本身确实可以解决您的问题。根据Esailija的建议,您可以使用该方法检查存储在
curPin
中的jQuery对象是否包含当前元素:
var curPin;
$(".pin").click(function() {
var $pin = $(this);
if (curPin.is(this)) {
console.log("true");
} else {
curPin = $pin;
console.log("false");
}
}
如果您的元素有一个id,您可以使用该id与类似的id进行比较-
var curPin;
$('.pin').click(function(){
var $pin = $(this).attr('id');
if (curPin == $pin)
{
console.log('true');
}
else
{
curPin = $pin;
console.log('false');
}
}
如果您的元素有一个id,您可以使用该id与类似的id进行比较-
var curPin;
$('.pin').click(function(){
var $pin = $(this).attr('id');
if (curPin == $pin)
{
console.log('true');
}
else
{
curPin = $pin;
console.log('false');
}
}
只需比较DOM元素:
if(curPin.get(0) == $pin.get(0)) {
// do something
}
只需比较DOM元素:
if(curPin.get(0) == $pin.get(0)) {
// do something
}
使用
if($(this).is(curPin))
检查元素是否相同。使用if($(this).is(curPin))
检查元素是否相同。因为比较的是jQuery对象,而不是DOM元素。jQuery对象总是不同的(比如{foo:42}==={foo:42}
是不同的),即使它们包含相同的DOM元素。是否还有其他类似于$pin的“unique ID”的属性可以进行相等性比较?是否值得从元素中比较一个属性,例如id?因为您正在比较jQuery对象,而不是DOM元素。jQuery对象总是不同的(比如{foo:42}==={foo:42}
是不同的),即使它们包含相同的DOM元素。是否还有其他类似于$pin的“unique ID”的属性可以进行相等性比较?是否值得从元素中比较一个属性,例如id?如果元素没有id怎么办?@FelixKling,那么我会尖叫和大叫!:)。就这点而言,这只是一个选项。如果元素没有ID怎么办?@FelixKling,那么我会尖叫和大叫!:)。就这点而言,这只是一个选项。您可以只使用if(curPin.is(this))
,它不会对OP的其他代码产生副作用,这些代码可能会将curPin
用作jQueryobject@Esailija,非常正确,这样可以避免更改curPin的类型。相应地更新了答案,感谢您的建议:)您可以只使用if(curPin.is(this))
,它对OP的其他代码没有副作用,这些代码可以使用curPin
作为jQueryobject@Esailija,非常正确,这样可以避免更改curPin的类型。答案相应更新,感谢您的建议:)文档:文档: