2016-09-27 58 views
0

功能我有一個表,其中有兩件事情:該行級別e.stopPropagation()是不是在淘汰賽JS

,並在檢查該行內部的複選框單擊

Click事件。

而當,複選框被選中時,我不希望tr上的Click事件被觸發。

<tbody data-bind="foreach:CustomerList"> 
     <tr onclick="removepage();" onmouseover="changeRowColor(this)" onmouseout="restoreRowColor(this)"> 

      <td> 
       <input class="checkbox" data-bind="click:$parent.customerClick(event)" 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> 

現在在customerClick();我試圖做到這一點。

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

但它沒有奏效。

它說,e.stopPropagation();也不是一個函數。

請告訴我該怎麼做。

+0

當'stopPropagation'是一個jQuery函數,並且您將事件與knockout綁定時,您期待什麼?! – eisbehr

+0

@eisbehr哦,我的壞。那麼如何實現所需的功能。 – StrugglingCoder

+0

根據KnockoutJS文檔(http://knockoutjs.com/documentation/click-binding.html),事件abject作爲點擊處理函數的第二個參數傳遞。 – TSV

回答

2

淘汰賽附帶了這樣的場合綁定 - clickBubble

<input class="checkbox" data-bind="click:$parent.customerClick(event), clickBubble: false" type="checkbox"> 

將其設置爲falseinput將阻止點擊事件進一步到達處理了樹。

+0

可愛的。但仍然需要檢查複選框。這沒有發生。 – StrugglingCoder

+1

這聽起來像是一個不同的問題。也許你應該調查['checked' binding](http://knockoutjs.com/documentation/checked-binding.html),而不是嘗試自己處理點擊。 –