我已经使用以下代码来获得“点击外部”以关闭工作:
这是整个代码的 jsfiddle(请在左侧导航中启用 jQuery 以使其工作):
http://jsfiddle.net/jhacks/ZxBXe/17/
点击 div 显示:
$('div.topIconNew').click(
function(){
$(this).siblings('div.topTip').show();
$(this).siblings('div.topDrop').slideDown(240);
在 div 隐藏之外单击:
$(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 的另一个实例,它们将不会关闭。
我尝试的解决方案如下:
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();
}
);
}
我想让上面说只有当topTip 和 topDrop 可见并且只隐藏当前打开的 topTip 和 topDiv 元素时,才在单击 topIconNew 时隐藏 topTip 和 topDrop。此外,如果没有任何东西是打开的(else 语句),我希望 topIconNew 停止传播...以便 div#wrapper.hide() 不会与 topIconNew.show() 冲突。
目前, else 语句正在工作,因为没有它,topIconNew .show 和 .hide 相互冲突,它们不起作用。但现在他们确实...
但是,if 语句不起作用,因为 topTip 和 topDrop 在打开时不会关闭,我单击 topIconNew。此外,我知道我遇到的至少一个问题是我没有指定关闭当前打开的 topTip 和 topDrop(现在我只是告诉它关闭它们中的任何一个)。
任何和所有的帮助都非常感谢这里。谢谢!!!