最近在学习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"));
});
});

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

解决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. optimize table tablename

    optimize 优化表OPTIMIZE 命令支持的引擎MyIsam, InnoDB, ARCHVE当对表有大量的增删改操作时,需要用optimize对表进行优化,可以减少空间与提高I/O性能,命令o ...

  2. ffmpeg摄像头采集h264编码RTP发送

    一. 相关API说明 1. av_register_all 2. avformat_network_init 不管是流媒体发送还是流媒体接收, 需要先执行该函数. 3. avformat_alloc_ ...

  3. java代码-----逻辑运算符

    总结:运算符不熟悉, package com.aa; public class Ss { public static void main(String[] args) { int i=1,j=10; ...

  4. PHP面向对象深入研究之【高级特性】

    静态属性 <?php class StaticExample { static public $aNum = 0; // 静态共有属性 static public function sayHel ...

  5. winform为本地化资源添加tag属性

    示例: /// <summary> /// 查找 System.Drawing.Bitmap 类型的本地化资源. /// </summary> internal static ...

  6. StampedLock

    StampedLock是Java8引入的一种新的所机制,简单的理解,可以认为它是读写锁的一个改进版本,读写锁虽然分离了读和写的功能,使得读与读之间可以完全并发,但是读和写之间依然是冲突的,读锁会完全阻 ...

  7. leetcode524

    public class Solution { public string FindLongestWord(string s, IList<string> d) { string long ...

  8. Linux字符设备驱动实现

    Linux字符设备驱动实现 要求 编写一个字符设备驱动,并利用对字符设备的同步操作,设计实现一个聊天程序.可以有一个读,一个写进程共享该字符设备,进行聊天:也可以由多个读和多个写进程共享该字符设备,进 ...

  9. imp导入数据的时候报错:ORA-01658: 无法为表空间 MAXDATA 中的段创建 INITIAL 区

    在oracle里创建表,报出错: ORA-01658: 无法为表空间space中的段创建 INITIAL 区: 或者: ORA-01658: unable to create INITIAL exte ...

  10. Celery 与 Flask 大型程序结构的结合

    :first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: 0; } img { border: 0; m ...