2013-12-17 2 views
0

С этой скрипкой ...Предотвращение пузыря щелчка от нокаута проверил связывания

http://jsfiddle.net/jeljeljel/5skHX/

... Обратите внимание, когда «жми меня» ссылка щелкнул элемент TBODY обрабатывает событие щелчка клокотало от элемент td. Однако, когда вы нажимаете этот флажок, обработчик клика по-прежнему вызывается. Как предотвратить блокирование события click от флажка?

HTML

<table> 
    <thead> 
     <tr> 
      <th></th> 
      <th>Col 1</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td> 
       <input type="checkbox" data-bind="checked: itemSelected" /> 
      </td> 
      <td>[Click me]</td> 
     </tr> 
    </tbody> 
</table> 
<div id="clicks" data-bind="text: clicks"></div> 

JAVASCRIPT

function Model() { 
    var self = this; 
    self.value = ko.observable(); 
    self.clicks = ko.observable(0); 
    self.itemSelected = ko.computed({ 
     read: function() { 
      return self.value(); 
     }, 
     write: function (value) { 
      self.value(value); 
      return true; 
     }, 
     deferEvaluation: true 
    }); 
} 
var model = new Model(); 
ko.applyBindings(model); 

$('tbody').click(function() { 
    model.clicks(model.clicks() + 1); 
}); 
+0

Да, я видел это, но возвращение «истина» от моего обработчика не исправило проблему. –

+1

Вам нужна функция 'click: function() {return true; }, нажмитеBubble: false': http://jsfiddle.net/Q8sRF/ – nemesv

+0

Да! Это ответ. спасибо! –

ответ

-2
... 
<td id="clickmeID">[Click me]</td> 
... 

и

$('#clickmeID').click(function() { 
model.clicks(model.clicks() + 1); 
}); 

Это то, что вы хотите ?

+0

Это работает, но для этого решения мне нужен обработчик клика для привязки к телу. –

+1

Это неправильный ответ для использования с нокаутом. –

Смежные вопросы