为什么jquery的on()只能使用一次?

时间:2013-04-04 03:58:51

标签: jquery jquery-on

我有一个只能运行一次的简单脚本。如果我单击表格行中的任何位置,我的脚本将选中一个复选框。但是,如果我在行内点击第二个,第三个等时间,那么它就不再起作用了。为什么?我现在使用的是jquery 1.9.1。当我使用jquery 1.8和live()而不是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);
        }
    });
});

2 个答案:

答案 0 :(得分:1)

您需要将prop替换为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

答案 1 :(得分:0)

如果checked中存在<input />属性,请不要关注其值,就会检查它。所以请替换以下内容:

loc.attr("checked", false);

使用:

loc.prop("checked", false);

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

loc.prop("checked", !loc.prop("checked"));