2013-11-22 84 views
1

點擊複選框如果父母「的onclick」事件被綁定到一個功能被忽略。 我不希望這樣的事情發生:我該怎麼辦呢?我已經剝離了我的代碼來說明問題。複選框,單擊忽略,如果父母已綁定的onclick

HTML:

<div class="container" data-bind="click: someFunction"> 
    Click me: <input type="checkbox" data-bind="checked: selected" /> 
</div> 

JS:

function vm() { 
    this.selected = ko.observable(true); 
    this.someFunction = function(){}; 
} 
ko.applyBindings(new vm()); 

小提琴:here。嘗試點擊複選框:它似乎沒有任何反應(不正確:我會稍後解釋發生了什麼)。

卸下調用someFunction到容器DIV結果的預期行爲。請參閱示例:here。顯然,這不是解決問題,因爲我需要someFunction被稱爲好。


我遵循的調試器的代碼,發現如何點擊實際上並沒有忽略,但很長的事件發生鏈,其中最後一個是恢復複選框的值(因此,無效點擊)。

要使用調試器遵循這條產業鏈中,我綁定的複選框單擊事件。

<div class="container"> 
    Click me: <input type="checkbox" data-bind="click: startDebug, checked: selected" /> 
</div> 

隨意打開你的開發工具,並看到預期的行爲是如何,而我們是startDebug函數內實現(但恢復到一個錯誤以後)。撥打調試器電話:here

+1

剛剛從你的函數返回TRUE;:'this.someFunction =函數(){返回true;};'HTTP ://jsfiddle.net/aYkpL/ – nemesv

+0

它的工作!非常感謝! – Saturnix

回答