如何使用 jquery 在父/子元素中实现事件顺序
我有一个父母&我的网页中的子元素都为它们定义了单独的事件处理程序。我已经在 Firefox 中进行了测试,其中父元素的事件处理程序首先被执行。我希望它以另一种方式执行 - 首先执行子元素的事件处理程序。
我读过有关如何使用 bind、stopPropagation、preventDefault 等实现这一点的内容,但我对如何使其工作感到有点困惑?有人可以阐明这个主题吗?
这是我实现事件处理的方式...
$('#Sidebar ul li .DeleteList').live('click', function(e) {
alert("I was deleted");
});
$('#Sidebar ul').delegate('li', 'click', function(e) {
alert("I was selected");
});
I have a parent & child elements in my web page where both have separate event handlers defined for them. I have tested in firefox, where the event handler for parent element gets executed first. I want it to execute the other way - child element's event handler getting executed first.
I have read about making use of bind, stopPropagation, preventDefault etc. make that happen but I am a bit confused as a to how to get this working? Can somebody shed some light on this topic?
Here is how I am implementing the event handling....
$('#Sidebar ul li .DeleteList').live('click', function(e) {
alert("I was deleted");
});
$('#Sidebar ul').delegate('li', 'click', function(e) {
alert("I was selected");
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为什么不保持一致并只使用
.live()
两者呢? :D这样“删除”就会首先被触发。
小提琴: http://jsfiddle.net/c9sBD/
Why not be consistent and just use
.live()
for both? :DThis way 'deleted' gets triggered first.
fiddle: http://jsfiddle.net/c9sBD/