jquery,checkbox无法用attr()二次勾选

今晨,漂亮的测试妹妹提了个奇怪的bug,说我一功能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>

1.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>

2.html

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

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

摘抄如下:“As of jQuery 1.6, the .attr() method returns undefined for attributes that have not been set. To retrieve and change DOM properties such as the checked, selected, or disabled state of form elements, use the .prop() method.”

时间: 2024-08-08 18:45:30

jquery,checkbox无法用attr()二次勾选的相关文章

jquery checkbox反复调用attr(&#39;checked&#39;, true/false)只有第一次生效

/** * 全选 */ function checkAll() { $("input[name=ids]").attr("checked", true); } /** * 全不选 */ function uncheckAll() { $("input[name=ids]").attr("checked", false); } 问题描述: 初始状态复选框没有全选, 点击全选按钮调用checkAll方法, 实现了全选, 然后点击全

jquery easyui datagrid 获取Checked选择行(勾选行)数据

原文:jquery easyui datagrid 获取Checked选择行(勾选行)数据 getSelected:取得第一个选中行数据,如果没有选中行,则返回 null,否则返回记录. getSelections:取得所有选中行数据,返回元素记录的数组数据. getChecked:取得checkbox选择行的数据,返回元素记录的数组数据. getSelected跟getSelections是选中行,而且getChecked是选择行. 选中行的意思就是,我们单击到某一个行,这个时候该行的背景色为

jquery操作checkbox火狐下第二次无法勾选问题

原来的代码: $('#checkAll').click(function(){ var current = $(this) $('.checkbox').each(function(){ debugger; if(current.is(':checked')) { $(this).attr('checked', true); } else { $(this).attr('checked', false); } }); }) 这样在firefox和chrome浏览器下第二次勾选时,属性改变了,页面

在项目中学习.NET的JQuery CheckBox方法(全选、取消全选、其他)

一.在项目中遇到的CheckBox的全选和取消全选以及其他等解决方案如下: // 对全选和取消全选的事件 $("#CheckAll").click(function () {                var checkedOfAll = $(this).prop("checked");                if (checkedOfAll == true) {                    $("input[id*='check']

android的listview加checkbox实现单保存checkbox的勾选信息

最近做一个项目时想要增加安卓端的一个功能,就是增加一个activity上面有很多checkbox的勾选信息,然后可以给人选择多选框,看起来还算很简单..但是真正做起来就有很多麻烦了.. 虽然我对安卓有点了解,以前也看过一些代码,但都是看别人的代码,看代码当然简单啦,这下要全部自己写,这下有点棘手了,一开始真是无从下手啊,后来去网上查了一下,觉得有个人的写法不错,就是用listview导入adapter的布局这样子,于是我就照着他的代码的原型开始改了起来. 改了N久,终于改的有点样子了,其中也花了

获取每个勾选的checkbox中的value值

<!--获取每个勾选的checkbox中的value值-->  $.each($('input:checkbox:checked'),function(){                window.alert("你勾选了:"+ $('input[type=checkbox]:checked').length+"个checkbox,其中每个的value值是:"+$(this).val());            }); 原文地址:https://ww

jquery,attr,prop,checkbox标签已有checked=checked但是不显示勾选

最近在做项目的过程中碰到了这样的一个问题:在使用bootstrap模态框的过程中,在模态框中有一个checkbox标签,一开始是为选中的,当点击触发模态框按钮,选中chcekbox时,会显示勾选,这个时候将选中的状态缓存起来,然后点击模态框中的关闭按钮,再次点击触发模态框按钮弹出模态框,这个时候问题出现了:         checkbox标签已有checked=checked但是不显示勾选,网上也查过有解决方案,就是将   $("...").attr("checked&qu

jquery attr prop checkbox已有checked=checked但不显示勾选问题

最近在做项目的过程中碰到了这样的一个问题:在使用bootstrap模态框的过程中,在模态框中有一个checkbox标签,一开始是为选中的,当点击触发模态框按钮,选中chcekbox时,会显示勾选,这个时候将选中的状态缓存起来,然后点击模态框中的关闭按钮,再次点击触发模态框按钮弹出模态框,这个时候问题出现了: checkbox标签已有checked=checked但是不显示勾选,查看图片: 网上也查过有解决方案,就是将   $("...").attr("checked"

jquery checkbox勾选/取消勾选的诡异问题

<form> 你爱好的运动是?<input type="checkbox" id="CheckedAll" />全选/全不选<br /> <input type="checkbox" name="items" value="足球" />足球 <input type="checkbox" name="items" v