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 相关文章推荐
取得传值的函数
Oct 27 Javascript
理解Javascript_02_理解undefined和null
Oct 11 Javascript
javascript获取当前鼠标坐标的方法
Jan 10 Javascript
js常用系统函数用法实例分析
Jan 12 Javascript
使用JS动态显示文本
Sep 09 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
Jul 23 jQuery
vue 兄弟组件的信息传递的方法实例详解
Aug 30 Javascript
vue-router之实现导航切换过渡动画效果
Oct 31 Javascript
Vue实例的对象参数options的几个常用选项详解
Nov 08 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
Jul 28 Javascript
Vue实现返回顶部按钮实例代码
Oct 21 Javascript
Js实现粘贴上传图片的原理及示例
Dec 09 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 图片上传实现代码 带详细注释
2010/04/29 PHP
基于header的一些常用指令详解
2013/06/06 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
在php中设置session用memcache来存储的方法总结
2016/01/14 PHP
php 输出json及显示json中的中文汉字详解及实例
2016/11/09 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
2019/09/05 PHP
tp5.1 框架数据库高级查询技巧实例总结
2020/05/25 PHP
jQuery 学习第七课 扩展jQuery的功能 插件开发
2010/05/17 Javascript
JS限制Textarea文本域字符个数的具体实现
2013/08/02 Javascript
Javascript:为input设置readOnly属性(示例讲解)
2013/12/25 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
2015/01/29 Javascript
JS扩展类,克隆对象与混合类实例分析
2016/11/26 Javascript
概述BootStrap中role=&quot;form&quot;及role作用角色
2016/12/08 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
浅谈Vue的响应式原理
2019/05/30 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
Python for循环生成列表的实例
2018/06/15 Python
Python设计模式之抽象工厂模式原理与用法详解
2019/01/15 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
Python垃圾回收机制三种实现方法
2020/04/27 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
2020/08/24 Python
英国老牌潮鞋店:Offspring
2019/08/19 全球购物
北京银河万佳Java面试题
2012/03/21 面试题
请写出char *p与"零值"比较的if语句
2014/09/24 面试题
大一新生军训时的自我评价分享
2013/12/05 职场文书
幼儿园秋游感想
2014/03/12 职场文书
原材料检验岗位职责
2014/03/15 职场文书
小学五年级语文上册教学计划
2015/01/22 职场文书
什么是执行力?9个故事告诉您:成功绝非偶然!
2019/07/05 职场文书
2019年市场部个人述职报告(三篇)
2019/10/23 职场文书
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
Java方法重载和方法重写的区别到底在哪?
2021/06/11 Java/Android
Redis基本数据类型String常用操作命令
2022/06/01 Redis