Ron*_*gge 37 javascript jquery
我正在尝试使用jQuery在网页上打开/关闭控件'框'.不幸的是,如果用户碰巧点击已经打开的盒子,关闭一个盒子只是为了重新打开它看起来不太好.(盒子互相排斥).
我正在使用的代码不起作用,我不知道为什么.我仍然得到一个盒子关闭只是为了重新打开,这不是所需的功能.我为调试目的创建了'val'变量; 在调试器中,它将'val'显示为与$(this)具有完全相同的值,这应该阻止它进入.slideToggle()if语句内部,但不会.
function openBox(index)
{
val = $('#box' + index);
$('.profilePageContentBox').each(function(){
if($(this).css('display') != 'none')
{
if($(this) != val)
{
$(this).slideToggle(200);
}
}
});
val.slideToggle(200);
}
Run Code Online (Sandbox Code Playgroud)
nic*_*ckf 49
使用该$()函数将始终创建一个新对象,因此无论如何,您的相等检查将始终失败.
例如:
var div = document.getElementById('myDiv');
$(div) === $(div); // false!
Run Code Online (Sandbox Code Playgroud)
相反,您可以尝试只存储实际的DOM元素,因为这些元素只是在jQuery对象中引用.
val = $('#box'+index).get(0);
...
if (this !== val) { }
Run Code Online (Sandbox Code Playgroud)