检查点击事件是否由 tr 中的按钮发起
Check if click event originated by button inside tr
我有一个包含 5 列的 html 表。在一列中,我有一个按钮。当我单击该行时,使用 jquery 我在该行上应用 css(我选择了该行(。但是当我单击该行上的按钮时,我不想将样式应用于该行。
现在我检查我是否像这样单击该行:
$('#mytable tbody').on('click', 'tr', function (event) {
//If the click originated by the button don't apply stile
//...
//...else apply the style on tr
}
在函数内部,如何检查点击是否由按钮发起?
可以使用事件的 target
属性来确定引发冒泡事件的元素。试试这个:
$('#mytable tbody').on('click', 'tr', function (e) {
if (e.target.nodeName == 'BUTTON') {
// the button was clicked...
}
});
或者,您可以在单击按钮时使用stopPropagation
:
$('#mytable tbody').on('click', 'button', function (e) {
e.stopPropagation();
// other logic...
});
您需要在按钮单击中使用event.stopPropagation()
event.stopPropagation(( 防止事件在 DOM 树中冒泡,防止任何 父处理程序不会收到事件通知。
来源 : https://api.jquery.com/event.stoppropagation/
您可以使用
event.currenttarget
检查当前目标并应用样式。
您可以通过event.target
过滤它:
$('#mytable tbody').on('click', 'tr', function (event) {
if (event.target.nodeName != 'TR') return;
// handle event
});
如果按钮上有 jQuery 事件处理程序,请使用 event.stopPropagation
,这样 click
事件就不会在 DOM 树中冒泡。
- 为
button
分配className
或id
。 - 使用
event.target.className
检查原始元素是否包含您提供给button
的className
或id
。仅当事件源不是来自按钮时,才触发tr
事件函数以设置tr
样式(当它等于按钮类时,然后停止(
if(event.target.className===<className>) {
//exit the function
return
} else {
//do the styling
}
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 多个单选按钮组相互干扰
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- Javascript按钮下拉列表
- jquery试图按名称获取按钮位置
- 漂亮照片图片库中的Facebook赞按钮
- 扩展移相器按钮类不工作
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 单击按钮以等待单击按钮
- 剑道UI内联编辑:如何在点击其他按钮时隐藏按钮
- 隐藏/显示基于所选单选按钮的表 TR - jquery
- 单击行中的按钮时获取 HTML TR 的元素
- 在表中第一个tr的倒数第二个td中选择按钮-使用jQuery选择器
- 检查点击事件是否由 tr 中的按钮发起
- 添加&单击按钮时减去TR(ID+1)
- 使用jquery按钮重置tr输入字段
- TextAngular自定义工具栏按钮onElementSelect对表/tr/td不起作用
- 隐藏<tr>基于所选单选按钮
- 在单击按钮时防止表tr可单击行