jquery操作checkbox火狐下第二次无法勾选的解决方法


Posted in Javascript onOctober 10, 2016

最近在学习jQuery(版本jquery-1.9.1.js),要求用jQuery实现全选/全不选、反选,在IE(IE8)中没有问题,但在火狐浏览器中调试的时候出现了一些小问题,达不到效果。

html代码如下:

<div>
    你爱好的运动是
    <input type="checkbox" id="selectal1" /><label for="selectal1">全选/全不选</label><br/>

    <input name="intrest" type="checkbox" />足球
    <input name="intrest" type="checkbox" />篮球
    <input name="intrest" type="checkbox" />羽毛球
    <input name="intrest" type="checkbox" />乒乓球<br/>
    <button id="allbtn">全选</button>
    <button id="notallbtn">全不选</button>
    <button id="reversebtn">反选</button>
    <button>提交</button>
  </div>

jQuery代码:

<script type="text/javascript" src="jquery-1.9.1.js"></script>
<script type="text/javascript">
  $().ready(function(){
    //全选/全不选复选框
    $("#selectal1").click( function(){
      if($(this).attr("checked")==true){
        $("input:checkbox[id!='selectal1']").each(function() {
          $(this).attr("checked",true);
        });
      }else{
        $("input:checkbox[id!='selectal1']").each(function() {
          $(this).attr("checked",false);
        });
      }
    });
    //全选按钮
    $("#allbtn").click(function(){
      $("input:checkbox[id!='selectal1']").each(function() {
        $(this).attr("checked",true);
      });
    });
    //全不选按钮
    $("#notallbtn").click(function(){
      $("input:checkbox[id!='selectal1']").each(function() {
        $(this).attr("checked",false);
      });
    });
    //反选按钮
    $("#reversebtn").click(function(){
      $("input:checkbox[id!='selectal1']").each(function() {
        $(this).attr("checked",!$(this).attr("checked"));
      });
    });
  })
</script>

复选框绑定了click事件,点一次选中,再点击取消选中,依次类推。这个功能在IE8中没问题,但是在firefox中测试的时候,前两次都没有问题,可以正常显示选中和取消,但当再去选中的时候,复选框的属性checkbox值变为”checked”,没问题,但是复选框却不在显示选中状态,明明属性值改了,但是却不显示勾选,我以为是浏览器缓存的问题,但是删除缓存还是不行……..后来在网上看到了方法,说是jQuery版本的问题,jQuery1.6以上用attr会存在兼容性问题,得换成prop。

查了下API prop属性是这样的:

prop(name|properties|key,value|fn)

概述

获取在匹配的元素集中的第一个元素的属性值。
随着一些内置属性的DOM元素或window对象,如果试图将删除该属性,浏览器可能会产生错误。jQuery第一次分配undefined值的属性,而忽略了浏览器生成的任何错误。
jQuery API明确说明,1.6+的jQuery要用prop,尤其是checkBox的checked的属性的判断,于是乎把js代码里面的attr换成prop就行了。

代码:

//1.6+的jQuery要用prop代替attr否则达不到效果!!!!
  //全选/全不选复选框
  $("#selectal1").click( function(){
   if($(this).prop("checked")==true){
    $("input:checkbox[id!='selectal1']").each(function() {
     $(this).prop("checked",true);
    });
   }else{
    $("input:checkbox[id!='selectal1']").each(function() {
     $(this).prop("checked",false);
    });
   }
  });
  //全选按钮
  $("#allbtn").click(function(){
   $("input:checkbox[id!='selectal1']").each(function() {
    $(this).prop("checked",true);
   });
  });
  //全不选按钮
  $("#notallbtn").click(function(){
   $("input:checkbox[id!='selectal1']").each(function() {
    $(this).prop("checked",false);
   });
  });
  //反选按钮
  $("#reversebtn").click(function(){
   $("input:checkbox[id!='selectal1']").each(function() {
    $(this).prop("checked",!$(this).prop("checked"));
   });
  });

希望对大家有所帮助。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
cnblogs中在闪存中屏蔽某人的实现代码
Nov 14 Javascript
使用angular写一个hello world
Jan 23 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
Jan 26 Javascript
PhotoSwipe异步动态加载图片方法
Aug 25 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
Apr 13 Javascript
JavaScript判断变量名是否存在数组中的实例
Dec 28 Javascript
Vue2.5通过json文件读取数据的方法
Feb 27 Javascript
JavaScript惰性求值的一种实现方法示例
Jan 11 Javascript
Vue项目安装插件并保存
Jan 28 Javascript
JQuery事件委托原理与用法实例分析
May 13 jQuery
JS数组方法slice()用法实例分析
Jan 18 Javascript
el-table树形表格表单验证(列表生成序号)
May 31 Javascript
浅谈jquery中使用canvas的问题
Oct 10 #Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
Oct 10 #Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
Oct 10 #Javascript
js监听键盘事件的方法_原生和jquery的区别详解
Oct 10 #Javascript
js 弹出虚拟键盘修改密码的简单实例
Oct 10 #Javascript
js捕捉键盘事件和按键键值的方法
Oct 10 #Javascript
js中获取键盘事件的简单实现方法
Oct 10 #Javascript
You might like
php利用单例模式实现日志处理类库
2014/02/10 PHP
php实现文件管理与基础功能操作
2017/03/21 PHP
javascript如何创建表格(javascript绘制表格的二种方法)
2013/12/10 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
2015/03/03 Javascript
JS中artdialog弹出框控件之提交表单思路详解
2016/04/18 Javascript
jstl中判断list中是否包含某个值的简单方法
2016/10/14 Javascript
Bootstrap轮播图学习使用
2017/02/10 Javascript
json 带斜杠时如何解析的实现
2019/08/12 Javascript
快速对接payjq的个人微信支付接口过程解析
2019/08/15 Javascript
vue按需加载实例详解
2019/09/06 Javascript
ES2020 新特性(种草)
2020/01/12 Javascript
vue中路由跳转不计入history的操作
2020/09/21 Javascript
Javascript生成器(Generator)的介绍与使用
2021/01/31 Javascript
安装dbus-python的简要教程
2015/05/05 Python
详解Python命令行解析工具Argparse
2016/04/20 Python
快速解决PyCharm无法引用matplotlib的问题
2018/05/24 Python
Python+pyplot绘制带文本标注的柱状图方法
2019/07/08 Python
python设计tcp数据包协议类的例子
2019/07/23 Python
django如何自己创建一个中间件
2019/07/24 Python
浅析Windows 嵌入python解释器的过程
2019/07/26 Python
python 直接赋值和copy的区别详解
2019/08/07 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
2020/09/02 Python
HTMl5的存储方式sessionStorage和localStorage详解
2014/03/18 HTML / CSS
护理专业毕业生自荐信范文
2014/01/05 职场文书
教师节促销活动方案
2014/02/14 职场文书
大学生个人自荐信
2014/02/24 职场文书
小学师德标兵先进事迹材料
2014/05/25 职场文书
银行转正自我鉴定
2014/09/29 职场文书
2014年家长学校工作总结
2014/11/20 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
杨善洲观后感
2015/06/04 职场文书
如何在CocosCreator里画个炫酷的雷达图
2021/04/16 Javascript
如何用python绘制雷达图
2021/04/24 Python
python字符串拼接.join()和拆分.split()详解
2021/11/23 Python