我如何比较两个jQuery对象的身份?

我试图用jQuery打开/closures网页上的控件“框”。 不幸的是,如果用户碰巧点击已经打开的盒子,closures盒子只是为了重新打开盒子,看起来不太好。 (框是互斥的)。

我正在使用的代码不起作用,我不知道为什么。 我仍然收到一个盒子,只是为了重新开放,这不是所需的function。 我为debugging目的创build了'val'variables; 在debugging器中,它显示'val'与$(this)具有完全相同的值,这应该阻止它进入if语句中的.slideToggle() ,但是不会。

 function openBox(index) { val = $('#box' + index); $('.profilePageContentBox').each(function(){ if($(this).css('display') != 'none') { if($(this) != val) { $(this).slideToggle(200); } } }); val.slideToggle(200); } 

使用$()函数将始终创build一个新的对象,所以无论如何,您的相等性检查总是会失败。

例如:

 var div = document.getElementById('myDiv'); $(div) === $(div); // false! 

相反,你可以尝试只存储实际的DOM元素,因为这些只是在jQuery对象内引用

 val = $('#box'+index).get(0); ... if (this !== val) { } 

你也可以这样做:

  if(val.is(this)) 

尝试这个:

 function openBox(index) { val=$('#box'+index); $('.profilePageContentBox').each(function(){ if($(this).is(":visible")) { if(!$(this).is("#box"+index)) $(this).slideToggle(200); } }); val.slideToggle(200); }