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 call 函数的用法说明
Apr 09 Javascript
如何用jquery控制表格奇偶行及活动行颜色
Apr 20 Javascript
使用jquery animate创建平滑滚动效果(可以是到顶部、到底部或指定地方)
May 27 Javascript
浅谈jQuery中对象遍历.eq().first().last().slice()方法
Nov 26 Javascript
JS操作HTML自定义属性的方法
Feb 10 Javascript
jquery实现选中单选按钮下拉伸缩效果
Aug 06 Javascript
JavaScript仿网易选项卡制作代码
Oct 06 Javascript
简单理解vue中实例属性vm.$els
Dec 01 Javascript
老生常谈js中的MVC
Jul 25 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
Dec 07 Javascript
详解小程序rich-text对富文本支持方案
Nov 28 Javascript
分享一个vue项目“脚手架”项目的实现步骤
May 26 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 iconv() : Detected an illegal character in input string
2010/12/05 PHP
PHP批量采集下载美女图片的实现代码
2013/06/03 PHP
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
几个javascript操作word的参考代码
2009/10/26 Javascript
c#和Javascript操作同一json对象的实现代码
2012/01/17 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
jQuery监控文本框事件并作相应处理的方法
2015/04/16 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
2016/05/16 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
2016/07/01 Javascript
AngularJS控制器之间的通信方式详解
2016/11/03 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
vue生命周期和react生命周期对比【推荐】
2018/09/19 Javascript
JavaScript 继承 封装 多态实现及原理详解
2019/07/29 Javascript
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
2020/10/19 Javascript
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
Python采用Django制作简易的知乎日报API
2016/08/03 Python
恢复百度云盘本地误删的文件脚本(简单方法)
2017/10/21 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
2019/01/15 Python
Python函数返回不定数量的值方法
2019/01/22 Python
python保留小数位的三种实现方法
2020/01/07 Python
Python导入数值型Excel数据并生成矩阵操作
2020/06/09 Python
用python进行视频剪辑
2020/11/02 Python
C,C++的几个面试题小集
2013/07/13 面试题
总经理办公室主任岗位职责
2013/11/12 职场文书
代理协议书
2014/04/22 职场文书
法人任命书范本
2014/06/04 职场文书
篮球兴趣小组活动总结
2014/07/07 职场文书
年检委托书
2014/08/30 职场文书
2014年教务处工作总结
2014/12/03 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
elementui的el-popover修改样式不生效的解决
2021/06/30 Javascript
【海涛教你打DOTA】虚空假面第一视角骨弓3房29杀
2022/04/01 DOTA