jquery-mobile – Knockout和jQuery Mobile:Checkboxes

前端之家收集整理的这篇文章主要介绍了jquery-mobile – Knockout和jQuery Mobile:Checkboxes前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试动态地将复选框和标签元素添加到文档中. CheckBox元素具有Knockout的data-bind属性,可将其值绑定到viewmodel中的可观察值.但是,当我尝试通过执行来设置jQuery Mobile的复选框样式时
$('input[type="checkBox"]').checkBoxradio();

数据绑定属性将被删除.如果我省略上面的行,则正确设置数据绑定属性并且绑定有效.

有没有办法同时拥有jQuery Mobile样式和Knockout绑定?

我正在使用jQuery Mobile RC1和Knockout 1.2.1.

解决方法

我也遇到过这个问题.不幸的是,这里的所有建议要么对我不起作用,要么有其他问题.所以我创建了一个简单的自定义绑定,适用于所有版本的KO(包括最新的v3):
ko.bindingHandlers.jqmChecked = {
    init: ko.bindingHandlers.checked.init,update: function (element,valueAccessor) {
        //KO v3 and prevIoUs versions of KO handle this differently
        //KO v3 does not use 'update' for 'checked' binding
        if (ko.bindingHandlers.checked.update) 
            ko.bindingHandlers.checked.update.apply(this,arguments); //for KO < v3,delegate the call
        else 
            ko.utils.unwrapObservable(valueAccessor()); //for KO v3,force a subscription to get further updates

        if ($(element).data("mobile-checkBoxradio")) //calling 'refresh' only if already enhanced by JQM
            $(element).checkBoxradio('refresh');
    }
};

应该像这样使用:

<input type="checkBox" data-bind="jqmChecked: someValue" id="checkBox1"/>

请在此处查看完整的工作示例:

http://jsfiddle.net/srgstm/ub6sq/

猜你在找的jQuery相关文章