为什么父母的兄弟姐妹有冒泡
Why there is a bubbling for parent's siblings?
我在单击事件上创建了一个简单的幻灯片切换效果,但".close"事件正在生成气泡。unbind() 和 stopImmediatePropagation() 都有效,但我不明白为什么 e.stopPropagation() 不起作用。另一个问题是为什么"关闭"点击事件会触发两次?单击几次联系按钮,然后单击"关闭",您将看到。斯菲德尔
<div class="container">
<div class="close">X</div>
<h3>Contact me</h3>
</div>
<button class="contact">Contact me</button>
var form = {
container: $('.container'),
init: function() {
$(".contact.button").on('click', this.show);
},
show: function(){
form.container.slideToggle(150);
form.close();
},
close: function() {
$('.close').on('click', function(e){
form.container.slideToggle(150);
// stopImmediatePropagation() and unbind() works;
// but why e.stopPropagation() does not work here?
});
}
};
form.init();
I could be wrong saying the click event is making bubble, because both elements don't have immediate relationship. I just don't know what is wrong here.
您一次又一次地订阅相同的事件。订阅事件不会覆盖现有订阅。
- 每次按下
Contact Me
按钮时,都会调用函数show
。 - 每次调用函数
show
时,都会调用函数close
。 - 每次调用函数
close
时,您都会向"X"按钮添加另一个侦听器。
结果是,如果您按Contact Me
两次,将有两个匿名函数侦听X
按钮。
这里有两种替代方法:
-
有一个名为
toggleState
的函数。它必须记住它当前处于什么状态,并在调用函数时相应地打开或关闭。然后,您只能订阅每个事件一次。 -
使用命名函数而不是匿名函数,并在适当的时候使用
jQuery.off
取消订阅事件。
相关文章:
- JQUERY检索并删除以前的兄弟姐妹
- Jquery/Javascript—查找父级's的兄弟姐妹's儿童'的孩子
- 通过单击链接(兄弟姐妹?)从无线电输入中获取id
- 包裹的咕哝声并不能让它的兄弟姐妹满意;peerDependencies要求
- 点击Div A触发Div B并移除Div B的兄弟姐妹
- mousedown在兄弟姐妹上的传播
- Kendo TreeView:检查节点是否有兄弟姐妹或子节点
- 子对象调用兄弟姐妹'方法
- 从元素'中选择一个元素;的兄弟姐妹
- 父母找到或兄弟姐妹或下一个不会工作
- 在这种情况下,如何更改接下来3个兄弟姐妹的类别
- 访问下一个兄弟姐妹
- 反应 - 将引用传递给兄弟姐妹
- 反应.js - 如何创建手风琴(与兄弟姐妹交谈)
- 在兄弟姐妹周围插入 Javascript 环绕
- 为什么父母的兄弟姐妹有冒泡
- 在没有兄弟姐妹时用jQuery找到下一个
- 同一班级的多个父母与同一班级的兄弟姐妹
- CSS Z-Index:如何在父级的兄弟姐妹上方显示元素?(并且有父母以上的表弟)
- 选择兄弟姐妹&父母和Cheerio