时间:2021-05-26
最近在学习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")); }); });希望对大家有所帮助。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
速卖通下月清退未进入店铺本月13日早上10点速卖通开始第二次招商准入,当时未完成门槛进入过程的店铺无法操作店铺商品。亿邦动力网知道,速卖通第二次招商准入主要针对
淘宝影响二次销售定义是怎样的?淘宝影响二次销售举证如何操作?通俗点来说,淘宝影响二次销售定义是你损坏了产品本来的样子,会影响第二次出售,产品不是完整的或者产
上一篇讲到:第一次点击全选按钮input显示对勾,第二次则不显示,需要用prop来添加checked属性。 但是用prop会出现一个问题,对勾显示,而chec
下面一段代码给大家介绍了jquery删除节点元素的方法,具体代码如下所示;//state用来判断获取内容的状态,单击一次获取文本内容,第二次单击删除内容vars
通常在作图的时候,有时候明明画的是圆,但是第二次打开的时候就变成了多边形,怎么回事呢?怎么修改呢?下面一起来看看解决方法,希望帮助到你。 方法一: