0

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

点击 div 显示:

$('div.topIconNew').click(
    function(){
        $(this).siblings('div.topTip').show();
        $(this).siblings('div.topDrop').slideDown(240);  

在 div 隐藏之外单击:

$('div#wrapper').click(
    function(event){
        $('div.topIconNew, div.topTip, div.topDrop').hide();
    }
);
$('div.topTip, div.topDrop').click(
    function(event){
        event.stopPropagation();
    }
);

上面的问题是topIconNew .stopPropagation 使得一旦topTip 和topDrop div 打开,如果我再次单击相同的topIconNew(即切换)或topIconNew 的另一个实例,它们将不会关闭。

新编辑***

好的,我正在考虑这个问题,并想知道解决方案是否可能与 if 语句一起使用。

所以我最终想要以下附加代码:

$('topIconNew').click(
    function(){
        $('div.topTip, div.topDrop').hide();
    }
);

但是,我希望上面还说只有topTip 和 topDrop 处于打开状态时才在单击 topIconNew 时隐藏 topTip 和topDrop并且仅隐藏当前打开的 topTip 和 topDiv 元素。

我该怎么说上面的?

4

1 回答 1

1

这并不能直接回答您的问题,但我刚刚看到有人以一种非常优雅的方式实现了“单击任意位置以关闭弹出窗口”方法;需要注意的是,您页面的其余部分必须e.stopPropagation()谨慎使用。

$('div.topIconNew').click(function(e){
    $(this).siblings('div.topTip').show();
    $(this).siblings('div.topDrop').slideDown(240); 

    $(document).one('click', function() {
        $('div.topTip, div.topDrop').hide();
    });

    e.stopPropagation();        

    ...
});
于 2011-12-14T08:02:16.140 回答