当一行中的复选框检查事件被触发时,也会触发Click事件

时间:2016-09-27 08:29:46

标签: javascript jquery

我在表格各行中有复选框。

我想要一些事件被触发,当行中的其他地方点击发生时。但是当选中复选框时,我不想触发任何事件。

这是我的标记。

        <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(); 
    },

但它不起作用。

我做错了什么?

4 个答案:

答案 0 :(得分:1)

您的customerClick函数应为:

customerClick: function (event) {
        event.stopPropagation(); 
    }

答案 1 :(得分:0)

您正在使用e而不将其添加为该功能的参数 所以只需在你的函数中添加e()

customerClick: function(e) {
    e.stopPropagation(); 
},

答案 2 :(得分:0)

在java脚本中,您可以停止事件列表器的冒泡,因为您有一些听众可以停止将其冒充到其他事件......

<强> event.stopPropagation()

是您要寻找的方法

答案 3 :(得分:0)

你应该绑定你的事件:

&#13;
&#13;
$("#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;
&#13;
&#13;

我希望这有助于你