我有一系列复选框,我想收集选定的一个。复选框位于 div 中,当单击 div 时,复选框也应该被选中:
var oCheckBox = $($(this).find('.chkSocialMediaItem').get(0));
oCheckBox.attr('checked', !$(oCheckBox).attr('checked'));
这工作得很好,但 KnockoutJS 不会接受更改,因此不会更新我对所选项目的计数器。
我在某处读到您需要触发更改事件。但是当我监听复选框上的更改事件时,它实际上会被触发。
如有任何帮助,我们将不胜感激, 谢谢!
更新:
我找到了“knockout ”解决方案。 在我的 div 中,我对“点击”进行了数据绑定(bind),并更改了该函数中的选中值:
<script type="text/html" id="Template">
<div class="item" data-bind="click: DivClicked">
<input type="checkbox" data-bind="checked: IsASelectedItem" class="chkSocialMediaItem"/>
</div>
</script>
function SocialMediaSearchItem() {
this.IsASelectedItem = ko.observable();
this.DivClicked = function () {
this.IsASelectedItem(!this.IsASelectedItem());
};
}
这是唯一的解决方案吗?我真的很希望 2 也能看到 Jquery 解决方案。
最佳答案
我遇到了同样的问题...虽然我确实找到了一个适合我的解决方案,但与 @RP Niemeyer 发布的解决方案不同,所以我想我会发布它。
knockout 版本:1.2.1 -- (knockout-1.2.1.js)
要取消选中 Knockout 绑定(bind)的复选框,我使用了以下内容
$('YourCheckBoxHere').removeAttr('checked');
$('YourCheckBoxHere').triggerHandler('click');
为了检查由 Knockout 绑定(bind)的复选框,我使用了以下内容
$('YourCheckBoxHere').attr('checked', 'true');
$('YourCheckBoxHere').triggerHandler('click');
希望如果其他解决方案不起作用,也许这会 =) ...在这个问题上浪费了大约 3 个小时。
关于jquery - 使用 Jquery 更改值时 KnockoutJS 属性不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7767635/