我使用以下代码来“点击外部”以关闭工作:
以下是整个代码的jsfiddle(请在左侧导航栏中启用jQuery以使其正常工作):
http://jsfiddle.net/jhacks/ZxBXe/17/
点击divs show:
$('div.topIconNew').click(
function(){
$(this).siblings('div.topTip').show();
$(this).siblings('div.topDrop').slideDown(240);
点击外面的divs隐藏:
$(document).click(
function(event){
$('div.topTip, div.topDrop').hide();
}
);
$('div.topTip, div.topDrop').click(
function(event){
event.stopPropagation();
}
);
上面的问题是,如果我添加topIconNew .stopPropagation,那么一旦topTip和topDrop div打开,如果我再次点击相同的topIconNew(即切换)或topIconNew的另一个实例,它们将不会关闭。 / p>
我尝试的解决方案如下:
if($('div.topTip, div.topDrop').is(':visible')){
$('div.topIconNew').click(
function(){
// need to specify only divs currently open to hide
$('div.topTip, div.topDrop').hide();
}
)
}
else {
$('div.topIconNew').click(
function(event){
event.stopPropagation();
}
);
}
我希望上面说的是在点击topIconNew时隐藏topTip和topDrop 如果 topTip和topDrop可见 AND 只隐藏当前的topTip和topDiv元素打开。另外,如果没有打开(else语句),我希望topIconNew stopPropagation ...以便div#wrapper.hide()不与topIconNew.show()冲突。
目前,else语句正在运行,因为没有它,topIconNew .show和.hide会相互冲突,但它们不起作用。但现在他们做了......
然而,if语句不起作用,因为topTip和topDrop在打开时不会关闭,我点击topIconNew。另外,我知道至少有一个问题是我没有指定关闭当前打开的topTip和topDrop(现在我只是告诉它关闭它们中的任何一个)。
这里非常感谢任何和所有的帮助。感谢!!!