【问题标题】:Prevent click event from affecting parent jquery防止点击事件影响父jQuery
【发布时间】:2011-10-08 10:05:23
【问题描述】:

我要阻止从孩子到父母的事件传播,我有一堆包含ali 标签。

$('li a[rel=close]').live('click', function(e){
    e.stopPropagation();
    e.preventDefault();
})

但它不会停止活动。有什么建议吗?

【问题讨论】:

标签: jquery events propagation stoppropagation


【解决方案1】:

stopPropagationlive 存在问题,来自 jQuery stopPropagation 文档 -

由于 .live() 方法在事件传播到 文件的顶部,不可能停止传播 现场活动

正如 Rob W 所说,您的代码可以在 bind 上正常工作,这是一个演示 - http://jsfiddle.net/TmKyT/

【讨论】:

  • stopPropagation 用于阻止气泡触发祖先 live 事件,但它会触发气泡中使用 bind 绑定的其他侦听器jsfiddle.net/yEnzC
【解决方案2】:

使用.bind 代替.livelive 事件在传播树的末尾触发。当您还想为稍后创建的元素绑定事件侦听器时,live 仅比 bind 更有用。

【讨论】:

    【解决方案3】:

    也许尝试使用委托?

    $('ul.parent').delegate('li a[rel=close]', 'click', function( event ) {
    
    }
    

    【讨论】:

      猜你喜欢
      • 2012-01-17
      • 1970-01-01
      • 2016-06-03
      • 1970-01-01
      • 1970-01-01
      • 2013-12-20
      • 2015-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多