Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么jquery';只有一次工作吗?_Jquery_Jquery On - Fatal编程技术网

为什么jquery';只有一次工作吗?

为什么jquery';只有一次工作吗?,jquery,jquery-on,Jquery,Jquery On,我有一个简单的脚本,只工作一次。如果单击表行中的任意位置,脚本将选中一个复选框。但是,如果我第二次、第三次等在行内单击,则它不再工作。为什么?我现在使用的是jQuery1.9.1。我的脚本以前在使用jQuery1.8时使用live(),而不是on() HTML: 当选中的属性位于中时,不管它的值如何,它都会被选中。因此,请替换以下内容: loc.attr("checked", false); 与: 或者,您可以通过以下方式在一行代码中执行此操作: loc.prop("checked", !lo

我有一个简单的脚本,只工作一次。如果单击表行中的任意位置,脚本将选中一个复选框。但是,如果我第二次、第三次等在行内单击,则它不再工作。为什么?我现在使用的是jQuery1.9.1。我的脚本以前在使用jQuery1.8时使用
live()
,而不是
on()

HTML:


选中的
属性位于
中时,不管它的值如何,它都会被选中。因此,请替换以下内容:

loc.attr("checked", false);
与:

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

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

您需要用道具替换attr,如下所示

$(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);
        }
    });
});

我认为您应该使用
loc.prop(“checked”)
,而不是
.attr()
。将“checked”attr设置为true或false与是否选中复选框无关。只要属性存在,它就会被选中。您应该添加和删除属性,而不是将其设置为true或false。正如@Barmar所说,使用prop。请参阅此SO问题:如果(ischecked==“checked”),请尝试使用此条件
loc.prop("checked", false);
loc.prop("checked", !loc.prop("checked"));
$(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);
        }
    });
});