Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过jquery删除选中的属性。模型值未在敲除js中更新_Javascript_Jquery_Knockout.js - Fatal编程技术网

Javascript 通过jquery删除选中的属性。模型值未在敲除js中更新

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

我使用jquery删除了checkbox的checked属性。UI值已更新。但是,模型值未更新。模型中存在相同的旧值。如果我手动选中未选中复选框,则模型值将更新。我有一个场景,其中一个复选框被选中,另一个复选框应该被取消选中。但我需要模型中的更新值

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。。