.PopBgd是100%的屏幕尺寸,另一个div .PopUp包含在.PopBgd中并出现在它上面。 单击.PopBgd可获得所需的隐藏效果。但是,单击PopUp中的任何位置也会运行下面脚本的fadeOut部分。
问题 如何防止脚本的fadeOut部分通过覆盖div来触发?
$('.BtnPop').click(function(e) {
e.preventDefault();
$($(this).data('popup')).fadeIn();
$('.PopClose, .PopBgd').click(function() {
$('.PopBgd').fadeOut();});
});
ANSWER
<button type="button" class="BtnPop" data-popup=".Pop1">CLICK</button>
<div class="Pop1 PopBgd">
<div class="PopUp">
<a class="PopClose">×</a>
<div>Content</div>
</div>
</div>
$('.BtnPop').click(function(e) {
e.preventDefault();
$($(this).data('popup')).fadeIn();
});
$('.PopClose, .PopBgd').click(function() {
$('.PopBgd').fadeOut();});
$('.PopUp').click(function(e) {
e.stopPropagation();
});
新问题 当目标div的名称未知时如何使用StopPropogation? 我上面尝试的东西不起作用。
我通过简单地向所需的div添加一个静态的第二个类名来解决我的其他问题,以允许stopPropogation正常工作。
答案 0 :(得分:5)
$('.Pop').click(function(e) {
e.stopPropagation();
});
.stopPropagation()“阻止事件冒泡DOM树,防止任何父处理程序被通知事件。”