函数在单击表行时被激发,需要停止复选框才能启动函数

Function fired onclick table row, need stop checkboxes from initiating functions

本文关键字:函数 复选框 启动 单击      更新时间:2023-09-26

我设置了一个函数,用于在单击某些表行时激发,但这里有一个大致的想法:

<p onclick="alert('Hello World!');">xxxxxxxxx<input type="checkbox"></p>

如何使其在单击复选框时不会激发函数?

<p onclick="var c = event.srcElement ? event.srcElement : event.target; if(c.tagName === 'P')alert('Hello World!');">Whats up<input onClick="" type="checkbox"></p>

使用event.srcElement,您可以访问实际触发事件的元素

编辑:Firefox没有属性srcElement,因此需要使用目标属性

在任何情况下,都必须为复选框创建一个单击处理程序。

如果你使用的是jQuery,你只需要调用其中的event.stopPropagation()

否则,请查看此帖子http://www.quirksmode.org/js/events_order.html#link9以获取代码示例(以及关于冒泡/捕获工作原理的完整解释)。

更简单的方法是为复选框设置.click事件处理程序并执行事件。stopImmediatePropagation()

$(":checkbox").click(函数(事件){event.stopImmediatePropagation();};

Ivan的答案(+1)在我的测试中有效,但如果您的用例更复杂(即单击p中的子节点),它可能会失败。另一种选择是:

<p onclick="alert('Hello World!');">xxxxxxxxx<input type="checkbox" onclick="event.stopPropagation()"></p>

它至少在我的测试(Chrome)中有效