Javascript 通过jquery删除选中的属性。模型值未在敲除js中更新
我使用jquery删除了checkbox的checked属性。UI值已更新。但是,模型值未更新。模型中存在相同的旧值。如果我手动选中未选中复选框,则模型值将更新。我有一个场景,其中一个复选框被选中,另一个复选框应该被取消选中。但我需要模型中的更新值Javascript 通过jquery删除选中的属性。模型值未在敲除js中更新,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我使用jquery删除了checkbox的checked属性。UI值已更新。但是,模型值未更新。模型中存在相同的旧值。如果我手动选中未选中复选框,则模型值将更新。我有一个场景,其中一个复选框被选中,另一个复选框应该被取消选中。但我需要模型中的更新值 answerClick: function (data, event) { var element = event.target; $(element).parents('.primaryCaseMain').find("div#" + va
answerClick: function (data, event) {
var element = event.target;
$(element).parents('.primaryCaseMain').find("div#" + valueToHide).find('input[type=checkbox]:checked').removeAttr('checked');
}
下面是HTML代码
<input type="checkbox" data-bind="attr:{id: $data.Id , Qid: $parent.Id , Qref: $data.QuestionRefSetStrings , Uid: $data.Uid , rel: $data.MutuallyExclusive ? 'true' : 'false'} ,checked: $data.Selected, click: $root.answerClick , if: $root.appendQrefQuestion($data.QuestionRefSetStrings, $data.NoAppendRequiredQref)">
您应该使用knockout来实现这种功能,而不是jQuery 在viewmodel中实现2个属性,我将它们称为
checkbox1
和checkbox2
var self = this; //to have access to this in anonymous functions
this.checkbox1 = ko.observable(true);
this.checkbox2 = ko.observable(false);
然后订阅每个观察值的更改,如果设置值为真,则将另一个观察值设置为false
this.checkbox1.subscribe(function(newValue){
if(newValue){
self.checkbox2(false);
}
});
this.checkbox2.subscribe(function(newValue){
if(newValue){
self.checkbox1(false);
}
});
然后使用选中的
绑定将属性绑定到复选框
<input type="checkbox" data-bind="checked: checkbox1" />
<input type="checkbox" data-bind="checked: checkbox2" />
在选中绑定中,我有一个模型值“$data.Selected”。此值是可观测数组的属性。如何在此基础上实现?此外,所有复选框都将在foreach循环中。因此将有多个复选框。我刚刚想到,为什么不使用单选按钮呢?如果你想使用复选框,你必须创建一个可观察的数组并订阅每个复选框。在订阅函数中,您必须将所有其他观测值的值设置为false。如何将订阅函数与obserableArray一起使用。选中绑定为“$data.selected”。你能给我看一下吗?每个条目都必须是可观察的。你订阅了每一个可观察的,而不是可观察的数组。可观察数组仅在数组更改(例如添加、删除元素)时通知UI,因此它对此毫无用处。更好的方法是以编程方式更新模型,而不是更新复选框UI。。