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 相关文章推荐
使一个函数作为另外一个函数的参数来运行的javascript代码
Aug 13 Javascript
一个用js实现控制台控件的代码
Sep 04 Javascript
javascript 读取XML数据,在页面中展现、编辑、保存的实现
Oct 27 Javascript
Jquery作者John Resig自己封装的javascript 常用函数
Nov 09 Javascript
jquery ajax提交表单数据的两种实现方法
Apr 29 Javascript
映彩衣的js随笔(js图片切换效果)
Jul 31 Javascript
javascript制作幻灯片(360度全景图片)
Jul 28 Javascript
JS实现HTML标签转义及反转义
Apr 14 Javascript
jQuery插件ContextMenu自定义图标
Mar 15 Javascript
详解JS实现系统登录页的登录和验证
Apr 29 Javascript
在vue中使用Echarts画曲线图的示例
Oct 03 Javascript
微信小程序自定义modal弹窗组件的方法详解
Dec 20 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
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
2014/10/20 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
2017/11/08 PHP
Laravel配合jwt使用的方法实例
2020/10/25 PHP
php中yii框架实例用法
2020/12/22 PHP
犀利的js 函数集合
2009/06/11 Javascript
js 跨域和ajax 跨域问题小结
2009/07/01 Javascript
javascript 判断数组是否已包含了某个元素的函数
2010/05/30 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
JavaScript伸缩的菜单简单示例
2013/12/03 Javascript
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
javascript每日必学之条件分支
2016/02/17 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
2017/07/24 Javascript
angularjs 的数据绑定实现原理
2018/07/02 Javascript
使用微信小程序开发弹出框应用实例详解
2018/10/18 Javascript
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
python3 发送任意文件邮件的实例
2018/01/23 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
Python调用shell cmd方法代码示例解析
2020/06/18 Python
抽象方法、抽象类怎样声明
2014/10/25 面试题
最受欢迎的自我评价
2013/12/22 职场文书
大学毕业自我评价
2014/02/02 职场文书
八荣八耻的活动方案
2014/08/16 职场文书
名人演讲稿范文
2014/09/16 职场文书
乡镇干部个人对照检查材料思想汇报
2014/10/04 职场文书
党员三严三实对照检查材料
2014/10/13 职场文书
表扬稿范文
2015/01/17 职场文书
行政后勤人员工作计划应该怎么写?
2019/08/16 职场文书
Python基础之常用库常用方法整理
2021/04/30 Python
详解CSS玩转图片Base64编码
2021/05/25 HTML / CSS
pt-archiver 主键自增
2022/04/26 MySQL