2016-09-27 135 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),而不是尝试自己处理点击。 –