2012-08-06 67 views
0

褪色后淡出我有一个DIV元素就在我的HTML代码jQuery的弹出格在

<div id="popup"></div> 

其CSS display属性设置为none最初的开始。现在,当我点击特定的HTML元素时,会发生以下情况:

$('#popup-opener-button').click(function() { 
    $('#popup').fadeIn(); 
}); 

这种方式就像魅力一样。现在,只要点击屏幕上的任何位置,除非点击DIV本身,否则我希望此DIV消失。我想这会做到这一点。

$('#popup').siblings().click(function() { 
    $('#popup').fadeOut(); 
}); 

但我点击我的弹出div来淡出SPAN实际上是#弹出的兄弟姐妹的孩子,那瞬间衰落之后淡出是否有不这样做?

+1

有点令人困惑 - 你能编辑你已经显示的标记,包括你引用的这个范围吗? – Faust 2012-08-06 15:54:07

回答

1

我不确定这会在一个沉重的DOM中表现如何,因为会有大量的事件冒泡发生,而:not psuedoselector不是最快的,但是此方法使用您可以传递的选择器到.on()筛选出div#popup,本质上允许您单击页面上的任何其他内容来触发​​。

​$(document.body).on('click',':not(#popup)', function(){ $('#popup').fadeOut(); })​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 
0

我不知道你怎么希望在#popup点击,如果它最初是隐藏的。这是你的代码中的错误?

这是一个适合我的解决方案。

$('#popup').click(function(e) { 
    $('#popup').fadeIn(); 

    // if i click in the popup, don't bubble the event up to the 'body' 
    e.stopPropagation(); 

    // hook up the fade-out event to the body to handle a click anywhere else 
    $('body').one('click', function() { $('#popup').fadeOut(); }); 
}); 
+0

[见这里](http://jsfiddle.net/eUhnV/1/)小提琴。 – 2012-08-06 16:12:26

+0

我的不好,抱歉。我手边没有原始代码,所以我无法复制粘贴。每当我到达我的电脑时,我都会试试这个。 – GergelyPolonkai 2012-08-07 06:52:17