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 相关文章推荐
jValidate 基于jQuery的表单验证插件
Dec 12 Javascript
jquery attr 设定src中含有&amp;(宏)符号问题的解决方法
Jul 26 Javascript
按钮接受回车事件的三种实现方法
Jun 06 Javascript
jQuery中:not选择器用法实例
Dec 30 Javascript
jquery实现华丽的可折角广告代码
Sep 02 Javascript
Javascript简单实现面向对象编程继承实例代码
Nov 27 Javascript
Javascript中字符串replace方法的第二个参数探究
Dec 05 Javascript
微信小程序(三):网络请求
Jan 13 Javascript
小程序兼容安卓和IOS数据处理问题及坑
Sep 18 Javascript
150行代码带你实现微信小程序中的数据侦听
May 17 Javascript
微信小程序使用字体图标的方法
May 23 Javascript
jQuery实现B2B网站后台管理系统侧导航
Jul 08 jQuery
浅谈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
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
laravel框架使用阿里云短信发送消息操作示例
2020/02/15 PHP
基于jQuery的图片不完全按比例自动缩小
2014/07/11 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
JavaScript ES6中CLASS的使用详解
2016/11/22 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
2016/11/28 Javascript
利用NPM淘宝的node.js镜像加速nvm
2017/03/27 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
2017/05/31 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
2019/06/18 jQuery
亲自动手实现vue日历控件
2019/06/26 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
webpack常用配置总览(小结)
2019/11/18 Javascript
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
Python模拟登陆实现代码
2017/06/14 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
详解python itertools功能
2020/02/07 Python
Python 使用 environs 库定义环境变量的方法
2020/02/25 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
微软香港官网及网上商店:Microsoft HK
2016/09/01 全球购物
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
介绍一下如何优化MySql
2016/12/20 面试题
简短证婚人证婚词
2014/01/09 职场文书
运输服务质量承诺书
2014/03/27 职场文书
大四毕业生自荐书
2014/07/05 职场文书
人力资源管理专业自荐书
2014/07/07 职场文书
2015年教师国培感言
2015/08/01 职场文书
课程设计感想范文
2015/08/11 职场文书
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
2021/05/22 Python
SQL中的连接查询详解
2022/06/21 SQL Server