1

我已经使用以下代码来获得“点击外部”以关闭工作:

这是整个代码的 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(现在我只是告诉它关闭它们中的任何一个)。

任何和所有的帮助都非常感谢这里。谢谢!!!

4

1 回答 1

1

嗯,有一个问题是你从来没有将“隐藏”代码分配给 topIconNew。

这是不是更接近你想要的?

http://jsfiddle.net/ZxBXe/20/

于 2011-12-15T01:43:23.883 回答