Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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
Javascript 按预期选择元素,但只选择一次,为什么?_Javascript_Jquery - Fatal编程技术网

Javascript 按预期选择元素,但只选择一次,为什么?

Javascript 按预期选择元素,但只选择一次,为什么?,javascript,jquery,Javascript,Jquery,我有一个表格,代表所有CMS帖子。 我正在编写一个功能,通过单击“全部选中/全部取消选中”checkbox元素 例如,无论你点击它多少次,它都会按预期工作。 如果选中复选框-它将提示“立即选中所有复选框” 否则-它将发出警报“立即取消选中所有复选框” 再一次-它的工作如预期 但是,如果将alert()s替换为另一个逻辑,则这将不再像预期的那样工作,只能工作一次 $("table thead input").click(function(){ var checkboxes = $("table

我有一个表格,代表所有CMS帖子。 我正在编写一个功能,通过单击“全部选中/全部取消选中”
checkbox元素

例如,无论你点击它多少次,它都会按预期工作。 如果选中复选框-它将提示“立即选中所有复选框” 否则-它将发出警报“立即取消选中所有复选框”

再一次-它的工作如预期

但是,如果将
alert()
s替换为另一个逻辑,则这将不再像预期的那样工作,只能工作一次

$("table thead input").click(function(){

 var checkboxes = $("table tbody tr input")

  if ($(this).is(':checked')) {

  checkboxes.each(function(){   
    $(this).attr('checked', true);
  });

  } else {

    checkboxes.each(function(){

     $(this).attr('checked', false);
    });
  }
});
它将选中/取消选中这些复选框,但只会选中一次-如果您再次单击
$(“table thead input”)
,它将不起作用

我尝试了
删除attr('checked')
,而不是
$(this.attr('checked',false)
,但是运气不好

有什么问题吗?

使用而不是设置选中状态

$(this).prop('checked', false);//to uncheck
$(this).prop('checked', true);//to check

您的代码可以简化为

$("table thead input").change(function () {
    var checkboxes = $("table tbody tr input");
    checkboxes.prop('checked', this.checked)
});
或者,如果元素不是动态的,则转到下面

//cache the checkbox reference
var checkboxes = $("table tbody tr input");
$("table thead input").change(function () {
    checkboxes.prop('checked', this.checked)
});
//cache the checkbox reference
var checkboxes = $("table tbody tr input");
$("table thead input").change(function () {
    checkboxes.prop('checked', this.checked)
});