我在表格各行中有复选框。
我想要一些事件被触发,当行中的其他地方点击发生时。但是当选中复选框时,我不想触发任何事件。
这是我的标记。
<tbody data-bind="foreach:CustomerList">
<tr onclick="removepage();" onmouseover="changeRowColor(this)" onmouseout="restoreRowColor(this)">
<td>
<input class="checkbox" data-bind="attr: { Id: 'checkbox' + $data.Id },click:$parent.customerClick" type="checkbox">
</td>
<td class="col-md-4">
<span class="name" data-bind="text:customerName" />
</td>
<td>
<span data-bind="text:siteName" />
</td>
</tr>
</tbody>
因此,如果 removepage()被触发,那么
发生customerClick(),我不希望 removepage()被解雇。
我试过
customerClick: function () {
debugger;
e.stopPropagation();
},
但它不起作用。
我做错了什么?
答案 0 :(得分:1)
您的customerClick函数应为:
customerClick: function (event) {
event.stopPropagation();
}
,
答案 1 :(得分:0)
您正在使用e而不将其添加为该功能的参数 所以只需在你的函数中添加e()
customerClick: function(e) {
e.stopPropagation();
},
答案 2 :(得分:0)
在java脚本中,您可以停止事件列表器的冒泡,因为您有一些听众可以停止将其冒充到其他事件......
<强> event.stopPropagation()强>
是您要寻找的方法
答案 3 :(得分:0)
你应该绑定你的事件:
$("#test > tbody > tr")
.on("click", "td:not(.notfiring)", function(){
alert("click tr");
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="test">
<tbody>
<tr>
<td class="notfiring">
<input class="checkbox" type="checkbox">
</td>
<td>
Col 1
</td>
<td>
Col 2
</td>
</tr>
</tbody>
</table>
&#13;
我希望这有助于你