javascript - jQuery 子激活父单击事件

标签 javascript jquery events dom

我在阻止子元素激活 jQuery 中的父单击事件时遇到问题。我用 Google 搜索了一下,偶然发现了几个不同的解决方案,但似乎都不适合我。

我需要使表格单元格在单击后可编辑,以便我可以通过 ajax 异步提交编辑后的文本。我正在使用 jQuery 将文本替换为输入字段,但随后无法对其进行编辑或提交,因为每次点击都会再次触发父事件。

我试过使用:

$("child").click(function(e){  
  e.stopPropagation();
})

还有 .unbind("click") 在父级上,因为一旦它被点击就不需要再次点击,但这似乎也解除了子级的绑定(bind)。

我准备了一个 fiddle为了正确显示问题。

任何帮助都会很棒!这让我发疯。

最佳答案

问题是因为 .btn-comment 元素是动态附加的,所以您需要一个委托(delegate)处理程序。试试这个:

$(".td-edit").on('click', '.btn-comment', function(e) {
    e.stopPropagation();
});

Updated fiddle

请注意 fiddle - 您可以看到事件未被传播,因为在单击 button 元素时 alert() 不会触发。

关于javascript - jQuery 子激活父单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14753405/

相关文章:

jquery - bootstrap 切换和 if 语句

javascript - Ruby On Rails Ajax 提交 提交两次

java - 混淆 Java Swing 线程中的事件顺序

javascript - 如果在输入内部或外部单击,则阻止事件更改

javascript - 通过为每个 <td> 使用 onclick 函数循环表来形成表..如何?

javascript - 为什么 Nodejs callback() 不能访问回调范围外的变量?

c# - 如何访问 VSTO Words 加载项中的 KeyUp、KeyDown 事件?

javascript - 谷歌浏览器 Javascript 链接错误

javascript - 尝试制作一个 for 循环来绘制 SVG

javascript - AngularJS 应用程序配置 "Uncaught object"错误 (ngRoute)