停止传播不工作,避免孩子点击触发其他功能
Stop propagation not working, avoid children click trigger other function
我为我的页面写了简单的叠加,有点像灯箱,但要做其他的事情,无论如何,我在这个测试中更大的问题…我想当你点击叠加蒙版,叠加关闭…但是如果你点击了childrendiv,就像contentdiv在overlay里面一样,overlay必须保持打开状态。(事实并非如此,这就是问题所在)
http://jsfiddle.net/7Cr2V/在Javascript中我怎么说,如果我点击& layfull"的子div请不要关闭或隐藏覆盖层…这是我的代码。上面是js小提琴,如果你想检查它,因为我的英语很差。
$('div.vidreveal a').click(
function(event) {
event.stopPropagation();
$('div.videoquon').fadeToggle(300);
$('div.overlayfull').fadeToggle(300);
}
);
$('div.my-video-close').click(
function(event) {
event.stopPropagation();
$('div.videoquon').fadeToggle(300);
$('div.overlayfull').fadeToggle(300);
}
);
$('div.overlayfull').click(
function(event) {
event.stopPropagation();
$('div.videoquon').fadeToggle(300);
$('div.overlayfull').fadeToggle(300);
}
);
一种解决方案是向子类添加一个click处理程序,在该处理程序中停止传播:
$('div.overlayfull').children().click(function(event){
event.stopPropagation();
});
stop propagation只对父元素有效,而不能停止活动元素本身。可以用一个类包含文本,如果单击
则返回false<div id='my-video'></div>
<div class="message">CLIC HERE MUST NOT CLOSE THE OVERLAY</div>
</div>
if (event.target.className === 'message')
return false;
http://jsfiddle.net/59trN/我认为这是最简单的方法,如果我理解正确的话。我只是在你的处理程序中检查一下,看看被点击的div是否是你不想关闭模态的那个,并在淡出触发之前从函数返回:
$('div.overlayfull').click(
function(event) {
if ($(event.target).hasClass('videoquon')){
return;
}
event.stopPropagation();
$('div.videoquon').fadeToggle(300);
$('div.overlayfull').fadeToggle(300);
}
);
查看小提琴http://jsfiddle.net/aRDKS/
为div内部设置一个事件,重载div并在其上停止传播。为了阻止在具有特定事件处理程序的父节点的子节点上发生的事件传播,可以检查在父节点处理程序中生成事件的目标,或者为子节点添加处理程序并应用event.stopPropagation()
以避免事件冒泡到父节点。
$('div.overlayfull div').click(function (e) {
e.stopPropagation()
});
或检查生成事件的目标id:
function (event) {
if (event.target.id == 'overlayfull') { // Check here if the event originated from the intended div itself
$('div.videoquon').fadeToggle(300);
$(this).fadeToggle(300);
}
});
小提琴
相关文章:
- 除修剪外的其他功能
- 计时器在使用 jQuery 一分钟后没有触发,或者每 1 分钟后给出一些其他解决方案来触发功能
- jQuery插件与其他基本的显示/隐藏功能冲突
- 淡入、滑入和其他需要显示的功能:无无法正常工作
- 是否可以访问其他功能中的克隆
- Jquery停止在其他开关外壳内的开关盒上的更改功能
- 使用其他点击功能重新加载
- 多功能 javascript 停止其他如果警报取消
- 解释$apply和$eval |我可以用其他功能替换它们吗 |AngularJS.
- 如何根据茉莉花单元测试中的其他对象测试功能
- 创建范围功能在除IE以外的其他浏览器中不起作用
- 是否可以访问同一文件中的其他模块导出功能
- 向 Google Maps API 添加其他功能
- 我是否可以在 Bootstrap 3 中为折叠手风琴指定一个相对的“数据目标”,同时保留“折叠其他”功能
- document.ready在同一页上禁用其他功能
- 单击功能时取消选中其他单选按钮
- 如果中途发生其他事件,如何重置clickToggle功能
- 获取将图像调整为其容器大小的脚本的名称+其他功能
- 如何实现像YouTube/其他网站这样的页面功能
- 单击其他元素时重置功能