淘汰赛我有以下几点:
<!-- ko foreach: data.folders -->
<div class="study-box">
<input class="study-box-checkbox" type="checkbox" />
</div>
<!-- /ko -->
这给了我一个带有复选框的 div 列表。我已将以下事件处理程序注册到学习框:
var bindEventToList = function (rootSelector, selector, callback, eventName) {
var eName = eventName || 'click';
$(rootSelector).on(eName, selector, function () {
var folder = ko.dataFor(this);
callback(folder);
return false;
});
};
bindEventToList(view, '.study-box', gotoDetails);
因此,当单击学习框时,会触发 goToDetails。
这样做的问题是,即使单击了包含复选框,也会触发事件。我不希望这种情况发生。复选框有自己的绑定:
<input class="study-box-checkbox" type="checkbox" data-bind="visible: checkboxIsVisible(), attr: { value: setId() }, attrIf: { id: 'study-box-checkbox-soft', _if: (softCheckboxIsVisible() && isSelected() == false) }, checked: isSelected" />
我认为一个选项是将复选框放置在 div 之外,但随后将复选框放置在每个 div 的顶部,这似乎远非微不足道。
如何解决这个问题?
JSFiddle:http: //jsfiddle.net/PTSkR/79/