0

我根本无法使用 jQuery 更新元素的属性。

HTML:

<input type="checkbox" name="row1" value="" >

jQuery:

$(document).ready(function (event) {
    $("input[type='checkbox']").change(function (e) {
        var name = $(this).attr('name');
        // grab name of original
        var value = $(this).attr('value');
        // grab value of original
        var ischecked = $(this).is(":checked");
        //check if checked
        if (!ischecked) {
            $('#' + name).removeAttr("checked");
            alert("removed attr ");
        } else {

            $('#' + name).attr("checked", "checked");
            alert($('#' + name).attr("checked"));

        }

    });
});

当我检查时显示警报“未定义”。

4

4 回答 4

2

更改$('#' + name)$(this)

$('#'+name).removeAttr("checked");

$(this).removeAttr("checked");

如果使用 jQuery 1.6 或更高版本,您可以使用

$(this).prop("checked", false);
于 2013-02-22T11:52:32.550 回答
1

尝试改变这种方式:检查 jsbin

$(document).ready(function (event) {
  $("input[type='checkbox']").change(function (e) {
    var name = $(this).attr('name');
    var value = $(this).val();
    var ischecked = $(this).is(":checked");

    if (!ischecked) {
        $(this).prop("checked", false);
        alert("removed attr ");
    } else {
        $(this).prop("checked", true);
        alert($(":checked").val());
    }

  });
});

shows up an alert 'undefined' when i check.

这应该是因为您没有尝试检查该值you can check the length of the **$(':checked')**

alert($(":checked").length);

如果您尝试检查:

alert($(":checked"));

你会得到[object object]警觉。

于 2013-02-22T11:58:44.727 回答
0

'#' 适用于id但不适用于名称

<input type="checkbox" name="row1" id="row1" value="" >

或使用来获取参考。

于 2013-02-22T11:53:55.797 回答
0

你的选择器是错误的。您尚未为复选框设置 ID。它应该是这样的:

$("input[name='"+name+"']").removeAttr("checked");
于 2013-02-22T11:55:09.983 回答