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 写类方式之六
Jul 05 Javascript
自定义jQuery选项卡插件实例
Mar 27 Javascript
基于jquery animate操作css样式属性小结
Nov 27 Javascript
动态加载js、css的简单实现代码
May 26 Javascript
简洁实用的BootStrap jQuery手风琴插件
Aug 31 Javascript
jQuery中Find选择器用法示例
Sep 21 Javascript
JavaScript生成.xls文件的代码
Dec 22 Javascript
微信小程序 swiper组件构建轮播图的实例
Sep 20 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
Mar 05 Javascript
Angular4学习笔记router的简单使用
Mar 30 Javascript
vue keep-alive请求数据的方法示例
May 16 Javascript
微信小程序实现的绘制table表格功能示例
Apr 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
DedeCms模板安装/制作概述
2007/03/11 PHP
PHP XML操作类DOMDocument
2009/12/16 PHP
php事务处理实例详解
2014/07/11 PHP
详解JavaScript对W3C DOM模版的支持情况
2015/06/16 Javascript
jquery小火箭返回顶部代码分享
2015/08/19 Javascript
浅析JS运动
2015/12/28 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
JS Array创建及concat()split()slice()的使用方法
2016/06/03 Javascript
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
vue elementui form表单验证的实现
2018/11/11 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
JavaScript实现轮播图效果
2020/10/30 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
2021/01/29 Javascript
学习python的几条建议分享
2013/02/10 Python
Python实现telnet服务器的方法
2015/07/10 Python
解决yum对python依赖版本问题
2019/07/05 Python
使用pycharm和pylint检查python代码规范操作
2020/06/09 Python
matplotlib 三维图表绘制方法简介
2020/09/20 Python
Python之字符串的遍历的4种方式
2020/12/08 Python
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
毕业生教师求职信
2013/10/20 职场文书
中专生自我鉴定书范文
2013/12/28 职场文书
小学运动会入场式解说词
2014/02/18 职场文书
我们的节日清明节活动方案
2014/03/05 职场文书
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
六查六看六改心得体会
2014/10/14 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
庆元旦主持词
2015/07/06 职场文书
天气温馨提示语
2015/07/14 职场文书
党员公开承诺书(2016最新版)
2016/03/24 职场文书