0

我有一个关于复选框的问题。

在链接的小提琴中,我有 2 个复选框。如果我同时选择(汽车,公共汽车)复选框,它还必须选择“Checkall”复选框。

切换状态的代码:

$('.checkAll').change(function() {
    $('.chc').attr('checked', $( this ).is( ':checked' ) ? 'checked' :'');
});

下面它完美:(使用jquery-ui 1.9.1jquery 1.4.2 )

演示:http: //jsfiddle.net/nUwfB/

但是如果我删除jquery 1.4.2版本并添加jquery 1.8.3,它就不起作用:

演示:http: //jsfiddle.net/dSCfp/

4

1 回答 1

0

.attr()方法已更改(并且不再适用checked于 > v1.6 中的复选框属性)。

从 jQuery 1.6 开始,.attr() 方法为尚未设置的属性返回 undefined。此外,.attr() 不应用于普通对象、数组、窗口或文档。要检索和更改 DOM 属性,请使用 .prop() 方法。

请改用.prop()方法(它接受布尔值,而不是字符串)。

$(document).ready(function() {
    $('.checkAll').change(function() {
        $('.chc').prop('checked', $(this).is(':checked'));
    });

    $("#slctble").selectable({
        filter: 'td',
        cancel: 'td:not(.isaretle)',
        stop: function() {
            $(".ui-selected input", this).each(function() {
                this.checked = !this.checked
            }); //end-ui-selected input
            $('.chc').length == $('.chc:checked').length ? $('.checkAll').prop('checked', true) : $('.checkAll').prop('checked', false);
        } //endStopFunction
    }); //endSelectable
});​

更新了非工作小提琴:http: //jsfiddle.net/dSCfp/1/

于 2012-11-20T13:43:34.373 回答