jQuery if和else语句麻烦

时间:2011-12-15 00:46:23

标签: jquery if-statement stoppropagation

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

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

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

1 个答案:

答案 0 :(得分:1)

嗯,有一个问题是你永远不会将'hide'代码分配给topIconNew。

这有点接近你想要的吗?

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