2

我有一个只工作一次的简单脚本。如果我单击表格行内的任何位置,我的脚本将选中一个复选框。但是,如果我在该行内单击第二次、第三次等时间,则它不再起作用。为什么?我现在使用 jquery 1.9.1。当我使用 jquery 1.8live()而不是on().

HTML:

<tr class="row">
    <td><input type="checkbox"></td>
</tr>

jQuery:

$(document).ready(function(){
    $("body").on("click",".row",function(){
        var loc = $(this).find('input');
        var ischecked = loc.attr("checked");
        if(ischecked) {
            loc.attr("checked", false);
        } else {
            loc.attr("checked", true);
        }
    });
});
4

2 回答 2

1

您需要将 attr 替换为 prop 如下

$(document).ready(function(){
    $("body").on("click",".row",function(){
        var loc = $(this).find('input');
        var ischecked = loc.attr("checked");
        if(ischecked) {
            loc.prop("checked", false);
        } else {
            loc.prop("checked", true);
        }
    });
});

jsfiddler

于 2013-04-04T04:07:23.597 回答
0

checked属性存在于 中时<input />,不要管它的值,它会被选中。所以替换以下内容:

loc.attr("checked", false);

和:

loc.prop("checked", false);

或者,您可以通过以下方式在一行代码中执行此操作:

loc.prop("checked", !loc.prop("checked"));
于 2013-04-04T04:03:23.097 回答