attr全选第三次失效

Posted 学如逆水行舟,不进则退

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了attr全选第三次失效相关的知识,希望对你有一定的参考价值。

一功能checkbox时隐时现,比如第一次打开有勾选,第n次打开可能就不选了。

经过偶层层抽次剥茧(da da jiang you),终于知道了原因:attr()在二次选中勾选框时,失效。

比如,如下html页面,一点【选中】、二点【取消选中】、三点【选中】,瞧,不行了呗。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>prop demo</title>
  <style>
  img {
    padding: 10px;
  }
  div {
    color: red;
    font-size: 24px;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
  <input type="checkbox" checked="checked">
  <input type="checkbox">
  <input type="checkbox">
  <input type="checkbox" checked="checked">
 
<script>
$( "input[type=\'checkbox\']" ).prop( "checked", function( i, val ) {
  return !val;
});
</script>
 
</body>
</html>

解决方案,是使用prop()替换attr()方法(在Jquery1.6以上),如下代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Attr checked</title>
<script type="text/javascript" src="./js/jquery-1.11.2.js"></script>
<script type="text/javascript">
    function switchChecked(flag) {
        $("input[type=\'checkbox\']").prop(\'checked\', flag);
    }
</script>
</head>
<body>
    <input type="checkbox" />
    <input type="button" onclick="switchChecked(true)" value="选中">
    <input type="button" onclick="switchChecked(false)" value="取消选中">
</body>
</html>

关于官方文档,见:http://api.jquery.com/attr/

或者http://api.jquery.com/prop/

 

转自:http://www.cnblogs.com/nick-huang/p/4436421.html

以上是关于attr全选第三次失效的主要内容,如果未能解决你的问题,请参考以下文章

jquery复选框全选功能

黄聪:JQUERY判断操作CHECKBOX选中取消选中反选第二次无法选中的问题

关于jQuery实现CheckBox全选只能生效一次的问题

Jquery 复选框全选与反选点击执行一次然后失效解决方案

该死的Checkbox啊,JS单选后全选失效怎么办?

jQuery 批量操作checkbox