Jquery 脱模检查装订

Jquery 脱模检查装订,jquery,checkbox,knockout.js,custom-binding,Jquery,Checkbox,Knockout.js,Custom Binding,因此,我尝试使用自定义的淘汰复选框绑定来触发表单中某些div的可见性。我很难弄明白它为什么不能正常工作。我已经设置了初始值,但是它不会重新更新。我的问题是我似乎无法正确绑定复选框 我有一把小提琴来帮助这件事更有意义。加载时,它会设置正确的值,但随后的单击不会执行任何操作 我被难住了,我看了太久了 var data = true; ko.bindingHandlers.aipchecked = { update: function(element, valueAccessor) {

因此,我尝试使用自定义的淘汰复选框绑定来触发表单中某些div的可见性。我很难弄明白它为什么不能正常工作。我已经设置了初始值,但是它不会重新更新。我的问题是我似乎无法正确绑定复选框

我有一把小提琴来帮助这件事更有意义。加载时,它会设置正确的值,但随后的单击不会执行任何操作

我被难住了,我看了太久了

var data = true;

ko.bindingHandlers.aipchecked = {
    update: function(element, valueAccessor) {
        var options = valueAccessor();
        alert(options.value());
        if (options.value()) {
                    $(options.checked).slideDown('fast', function () { });
                    $(options.unchecked).slideUp('fast', function () { });
        } else {
                    $(options.checked).slideUp('fast', function () { });
                    $(options.unchecked).slideDown('fast', function () { });
        }
        options.value(options.value())
        //ko.bindingHandlers.checked.update(element, options.value);
      } 
};

var viewModel = {
    control:[
        {   
            checked: '#one',
            unchecked: '',
            value: ko.observable(true)
       }    
    ]
};
viewModel.control[0].value(data);
ko.applyBindings(viewModel);
HTML

    <div data-bind="foreach: control">
<input type="checkbox" data-bind="aipchecked:{value: value,checked:checked,unchecked:unchecked}" />
    <label data-bind="text: value"></label>
</div>
    <div id="one">testing</div>

测试

V/R,
杰弗里

下面是代码中的两件事-

  • 在HTML中使用“checked”绑定而不是“value”绑定,因为check事件会更改复选框的状态

    <div data-bind="foreach: control">
        <input type="checkbox" data-bind="checked:value,aipchecked:{value: value,checked:checked,unchecked:unchecked}" />
        <label data-bind="text: value"></label>
    </div>
    <div id="one">testing</div>
    

  • 类似这样的话:谢谢罗伯特,这让我想到了一些我认为有效的方法。我不知道确切的原因,但它似乎有效。您在最初链接的小提琴中遇到的问题是使用
    绑定,而不是
    选中
    。。。我很高兴能提供一些帮助:)哇,谢谢Origineil和Robert。你的回答肯定解决了我原来的问题。罗伯特也谢谢你的帖子也很有帮助。
    var data = true;
    
    ko.bindingHandlers.aipchecked = {
        update: function(element, valueAccessor) {
        var options = valueAccessor();
        alert(options.value());
        if (options.value()) {
                $(options.checked).slideDown('fast', function () { });
                $(options.unchecked).slideUp('fast', function () { });
        } else {
                $(options.checked).slideUp('fast', function () { });
                $(options.unchecked).slideDown('fast', function () { });
        }
        //ko.bindingHandlers.checked.update(element, options.value);
        } 
    };
    
    var viewModel = {
        control:[
            {   
                checked: '#one',
                unchecked: '',
                value: ko.observable(true)
            }    
        ]
    };
    viewModel.control[0].value(data);
    ko.applyBindings(viewModel);