如何比较两个jQuery对象的身份
How do I compare two jQuery objects for identity?
我试图使用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);
}
相关文章:
- 将jQuery对象传递到setTimeout递归函数中
- jQuery:对象不是函数
- jQuery对象从html表中查询为两个一维数组,用于Chartist图表
- 如何从jQuery对象文本正确调用服务器端ASP.NET并将数据返回给jQuery
- 检查对象是否基于jquery对象
- 如何在几个jQuery对象上调用jQuery函数
- 将Javascript函数链接到返回jQuery对象的jQuery函数
- 如何正确地将jquery插件添加到webpack中的jquery对象中
- 用jquery post发送jquery对象
- 如何创建jQuery插件来缓存jQuery对象,如下所示
- 从主体分离时,jQuery对象scrollTop(值)
- 创建jQuery对象时出现问题
- 获取随机jQuery对象的属性
- 在 javascript