2016-09-27 51 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>

相關問題