最近在学习jQuery(版本jquery-1.9.1.js),要求用jQuery实现全选/全不选、反选,在IE(IE8)中没有问题,但在火狐浏览器中调试的时候出现了一些小问题,达不到效果。

html代码如下:

  1. <div>
  2. 你爱好的运动是
  3. <input type="checkbox" id="selectal1" /><label for="selectal1">全选/全不选</label><br/>
  4. <input name="intrest" type="checkbox" />足球
  5. <input name="intrest" type="checkbox" />篮球
  6. <input name="intrest" type="checkbox" />羽毛球
  7. <input name="intrest" type="checkbox" />乒乓球<br/>
  8. <button id="allbtn">全选</button>
  9. <button id="notallbtn">全不选</button>
  10. <button id="reversebtn">反选</button>
  11. <button>提交</button>
  12. </div>

jQuery代码:

  1. <script type="text/javascript" src="jquery-1.9.1.js"></script>
  2. <script type="text/javascript">
  3. $().ready(function(){
  4. //全选/全不选复选框
  5. $("#selectal1").click( function(){
  6. if($(this).attr("checked")==true){
  7. $("input:checkbox[id!='selectal1']").each(function() {
  8. $(this).attr("checked",true);
  9. });
  10. }else{
  11. $("input:checkbox[id!='selectal1']").each(function() {
  12. $(this).attr("checked",false);
  13. });
  14. }
  15. });
  16. //全选按钮
  17. $("#allbtn").click(function(){
  18. $("input:checkbox[id!='selectal1']").each(function() {
  19. $(this).attr("checked",true);
  20. });
  21. });
  22. //全不选按钮
  23. $("#notallbtn").click(function(){
  24. $("input:checkbox[id!='selectal1']").each(function() {
  25. $(this).attr("checked",false);
  26. });
  27. });
  28. //反选按钮
  29. $("#reversebtn").click(function(){
  30. $("input:checkbox[id!='selectal1']").each(function() {
  31. $(this).attr("checked",!$(this).attr("checked"));
  32. });
  33. });
  34. })
  35. </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. //1.6+的jQuery要用prop代替attr否则达不到效果!!!!
  2. //全选/全不选复选框
  3. $("#selectal1").click( function(){
  4. if($(this).prop("checked")==true){
  5. $("input:checkbox[id!='selectal1']").each(function() {
  6. $(this).prop("checked",true);
  7. });
  8. }else{
  9. $("input:checkbox[id!='selectal1']").each(function() {
  10. $(this).prop("checked",false);
  11. });
  12. }
  13. });
  14. //全选按钮
  15. $("#allbtn").click(function(){
  16. $("input:checkbox[id!='selectal1']").each(function() {
  17. $(this).prop("checked",true);
  18. });
  19. });
  20. //全不选按钮
  21. $("#notallbtn").click(function(){
  22. $("input:checkbox[id!='selectal1']").each(function() {
  23. $(this).prop("checked",false);
  24. });
  25. });
  26. //反选按钮
  27. $("#reversebtn").click(function(){
  28. $("input:checkbox[id!='selectal1']").each(function() {
  29. $(this).prop("checked",!$(this).prop("checked"));
  30. });
  31. });

希望对大家有所帮助^_^

解决jquery操作checkbox火狐下第二次无法勾选问题的更多相关文章

  1. 解决jquery操作checkbox全选全不选无法勾选问题

    最近在学习中使用jquery操作checkbox,使用下面方法进行全选.反选:$("input[name='checkbox']").attr("checked" ...

  2. jquery,checkbox无法用attr()二次勾选

    今晨,漂亮的测试妹妹提了个奇怪的bug,说我一功能checkbox时隐时现,比如第一次打开有勾选,第n次打开可能就不选了. 想到与美女有亲密接触机会,马上鸡动起来. 经过偶层层抽次剥茧(da da j ...

  3. jQuery操作CheckBox的方法(选中,取消,取值)

    jQuery操作CheckBox的方法(选中,取消,取值). 代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional/ ...

  4. jquery操作checkbox方法(全选、全不选、至少选择一个、选择值/文本)

    原文:http://blog.csdn.net/u014079773/article/details/52371382 在实际开发中我们经常操作checkbox,不仅仅要获得checkbox选中的值, ...

  5. jquery.autocomplete在火狐下的BUG解决

    该插件在火狐下使用拼音输入法输入,回车后无法即使响应事件,需要再输入别的字母才会响应事件     主要原因:   该插件响应主要监听了keydown事件   其他浏览器在打开中文输入法的情况下输入的拼 ...

  6. JQuery操作CheckBox 第二次无法选中的问题

    用JQuery做CheckBox全选和反选的时候,遇到一个问题.当用JQ控制全选,全取消一次以后,再次点击全选,发现代码变了,但是CheckBox没有处于选中状态. 百度后得知: 我使用的方法是 $( ...

  7. 使用jquery 操作checkbox

    checkbox 的全选与全不选以及获取选择的值. 效果: <!DOCTYPE html> <html lang="en"> <head> &l ...

  8. jquery操作checkBox 一次取消选中后不能再选中

    $("input[type='checkbox']").each(function(){ $(this).attr("checked","checke ...

  9. 解决el-tree lazy懒加载时,连续勾选前两个子节点后第二次进入默认选中时,将父节点也勾选的问题

    在用到el-tree的懒加载和默认勾选功能时,若第一次勾选前几个连续节点,第二次进入默认勾选时,由于el-tree子节点尚未完全加载(只加载出来前几个),默认勾选已经开始(已加载出来的子节点被默认勾选 ...

随机推荐

  1. VS下QT的自定义槽函数修改方法

    通过几天的摸索,基本发现了两个VS的槽函数的修改方法 一种是UI是通过UI 设计师拖出来的,类似VB的方法,通过拖的方法,按钮的代码是系统自动生成的,在UI.h的头文件下,这个时候,实现槽函数有个固定 ...

  2. module_param 用于动态开启/关闭 驱动打印信息

    1.定义模块参数的方法: module_param(name, type, perm); 其中,name:表示参数的名字;      type:表示参数的类型;      perm:表示参数的访问权限 ...

  3. codeforce 985C Liebig's Barrels(贪心+思维)

    Liebig's Barrels time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  4. 微信小程序之if操作

    .wxss控制样式 .price-agent{ font-size: 25rpx; color:#ababab; float: left; position: absolute; bottom: 0; ...

  5. pt工具之pt-archiver

    # tar -zxvf percona-toolkit-2.2.17.tar.gz# yum -y install perl perl-IO-Socket-SSL perl-DBD-MySQL per ...

  6. matlab神经网络工具箱创建神经网络

    为了看懂师兄的文章中使用的方法,研究了一下神经网络 昨天花了一天的时间查怎么写程序,但是费了半天劲,不能运行,百度知道里倒是有一个,可以运行的,先贴着做标本 % 生成训练样本集 clear all; ...

  7. jQuery解析JSON出现SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data

    SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data 我在使用$.parseJSON解析后 ...

  8. C#三层架构实例

    对于三层的概念查也查了,看也看了,下面是我找的一个关于三层的简单实例,真正看一下它是如何具体实现的. 我们先来一起看看 实体类-Model 实质:实体类就是在完成数据库与实体类对应的功能,一个类是一张 ...

  9. sonarLint 插件配置sonarQube Server

    Connected Mode You can bind Eclipse projects to a SonarQube project (supporting SonarQube servers 5. ...

  10. Spark的几个问题

    1.application是由driver和executor组成的,executor可以分成task,task又可以分成为stage.当一个任务提交给spark之后,spark机群的主节点会出现dri ...