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 相关文章推荐
jquery JSON的解析方式
Jul 25 Javascript
日历查询的算法 如何计算某一天是星期几
Dec 12 Javascript
php,js,css字符串截取的办法集锦
Sep 26 Javascript
元素绑定click点击事件方法
Jun 08 Javascript
详解javascript实现自定义事件
Jan 19 Javascript
Javascript复制实例详解
Jan 28 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
Oct 01 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
Jun 17 Javascript
JavaScript之数组扁平化详解
Jun 03 Javascript
vue使用swiper.js重叠轮播组建样式
Nov 14 Javascript
ES6 async、await的基本使用方法示例
Jun 06 Javascript
vue 清空input标签 中file的值操作
Jul 21 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
IIS6.0中配置php服务全过程解析
2013/08/07 PHP
PHP5.3与5.5废弃与过期函数整理汇总
2014/07/10 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
javascript面向对象的方式实现的弹出层效果代码
2010/01/28 Javascript
js 禁用只读文本框获得焦点时的退格键
2010/04/25 Javascript
深入理解JavaScript系列(9) 根本没有“JSON对象”这回事!
2012/01/15 Javascript
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
Javascript中的call()方法介绍
2015/03/15 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
2015/05/01 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
深入理解JS的事件绑定、事件流模型
2018/05/13 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
VUE搭建手机商城心得和遇到的坑
2019/02/21 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
2019/09/20 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
2019/11/24 Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
2019/12/09 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
[00:32]2018DOTA2亚洲邀请赛EG出场
2018/04/03 DOTA
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
简单的Python2.7编程初学经验总结
2015/04/01 Python
基于python的itchat库实现微信聊天机器人(推荐)
2019/10/29 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
python标准库OS模块函数列表与实例全解
2020/03/10 Python
python matplotlib imshow热图坐标替换/映射实例
2020/03/14 Python
CSS3制作翻转效果_动力节点Java学院整理
2017/07/11 HTML / CSS
HTML5 canvas实现移动端上传头像拖拽裁剪效果
2016/03/14 HTML / CSS
单位未婚证明范本
2014/01/18 职场文书
学校文明单位申报材料
2014/05/06 职场文书
工伤私了协议书范本
2014/11/24 职场文书
计划生育工作总结2015
2015/04/03 职场文书
《酸的和甜的》教学反思
2016/02/18 职场文书
我对PyTorch dataloader里的shuffle=True的理解
2021/05/20 Python
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
2022/02/12 Servers