2016-09-27 50 views
1

我在表格各行中有复选框。单击事件同时触发当一行中的复选框检查事件被触发时

我想要某个事件被触发,当其他行发生时。但是当一个复选框被选中时,我不想触发任何事件。

这是我的标记。

 <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

在你的代码中,'e'是不确定的?! –

+0

将不带引号的“e”作为参数传递给您的customerClick函数并再次检查。 –

回答

1

您customerClick功能应该是:

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

0

您正在使用电子不添加它作为一个参数的函数 所以只是在你的函数()加测e

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

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

event.stopPropagation()

是你寻找

0

你应该绑定你的事件,像这样的方法:我希望这有助于

$("#test > tbody > tr") 
 
    .on("click", "td:not(.notfiring)", function(){ 
 
    alert("click tr"); 
 
    });
<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>

相关问题