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

How do I compare two jQuery objects for identity?

本文关键字:jQuery 对象 身份 两个 何比较 比较      更新时间:2023-09-26

我试图使用jQuery打开/关闭一个网页上的控制'框'。不幸的是,如果用户碰巧点击了已经打开的框,关闭一个框然后重新打开它看起来不太好。(方框是互斥的)

我正在使用的代码不工作,我不知道为什么。我仍然有一个关闭的盒子,只是为了重新打开,这不是我想要的功能。我创建了'val'变量用于调试;在调试器中,它显示'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);
}

您还可以:

 if(val.is(this))

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

例如:

var div = document.getElementById('myDiv');
$(div) === $(div);   // false!
相反,您可以尝试只存储实际的DOM元素,因为它们只是引用到jQuery对象内部。
val = $('#box'+index).get(0);
...
if (this !== val) { }

试试这个:

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