在jquery中无法更改属性

时间:2013-02-22 11:48:44

标签: jquery

我根本无法使用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 个答案:

答案 0 :(得分:2)

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

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

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

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

$(this).prop("checked", false);

答案 1 :(得分:1)

尝试更改此方式:check the 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]处于警戒状态。

答案 2 :(得分:0)

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

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

或使用来获取参考。

答案 3 :(得分:0)

你的选择器错了。 您尚未为复选框设置ID。看起来应该是这样的:

$("input[name='"+name+"']").removeAttr("checked");