浅谈jquery中prop()和attr()
2016-07-20 00:20
471 查看
我们都知道,一般在jquery中设置属性时要用到attr()方法,现在我们有一个效果,点击按钮切换复选框的选中状态,下面贴出html代码:
js代码:
我们发现当点击按钮时,第一次点击时复选框会选中,第二次时点击复选框会取消选中,但以后再点击时复选框将不会有任何效果。更奇怪的是,打开调试工具,点击按钮时html代码中会有相应的checked="checked"代码段,但页面却没效果。
当我们用prop()方法替换attr()方法时,一切将变得正常:
这是为什么呢,jquery1.6中新加了一个方法prop(),官方解释只有一句话:获取在匹配的元素集中的第一个元素的属性值。
大家都知道有的浏览器只要写disabled,checked就可以了,而有的要写成disabled = "disabled",checked="checked",比如用attr("checked")获取checkbox的checked属性时选中的时候可以取到值,值为"checked"但没选中获取值就是undefined。
jq提供新的方法“prop”来获取这些属性,就是来解决这个问题的,以前我们使用attr获取checked属性时返回"checked"和"",现在使用prop方法获取属性则统一返回true和false。
那么,什么时候使用attr(),什么时候使用prop()?
1.添加属性名称该属性就会生效应该使用prop();
2.是有true,false两个属性使用prop();
3.其他则使用attr();
以下是官方建议attr(),prop()的使用:
![](https://images2015.cnblogs.com/blog/992072/201607/992072-20160720001611685-1078220394.png)
原文地址:http://www.jb51.net/article/41170.htm
<input type="checkbox" id="check"> <label>复选框</label> <input type="button" value="切换" id="btn">
js代码:
<script> $(function(){ var flag=false; $("#btn").click(function(){ if(flag==false){ $("#check").attr("checked",true); flag=true; }else{ $("#check").removeAttr("checked"); flag=false; } }); }); </script>
我们发现当点击按钮时,第一次点击时复选框会选中,第二次时点击复选框会取消选中,但以后再点击时复选框将不会有任何效果。更奇怪的是,打开调试工具,点击按钮时html代码中会有相应的checked="checked"代码段,但页面却没效果。
当我们用prop()方法替换attr()方法时,一切将变得正常:
<script> $(function(){ var flag=false; $("#btn").click(function(){ if(flag==false){ $("#check").prop("checked",true); flag=true; }else{ $("#check").removeAttr("checked"); flag=false; } }); }); </script>
这是为什么呢,jquery1.6中新加了一个方法prop(),官方解释只有一句话:获取在匹配的元素集中的第一个元素的属性值。
大家都知道有的浏览器只要写disabled,checked就可以了,而有的要写成disabled = "disabled",checked="checked",比如用attr("checked")获取checkbox的checked属性时选中的时候可以取到值,值为"checked"但没选中获取值就是undefined。
jq提供新的方法“prop”来获取这些属性,就是来解决这个问题的,以前我们使用attr获取checked属性时返回"checked"和"",现在使用prop方法获取属性则统一返回true和false。
那么,什么时候使用attr(),什么时候使用prop()?
1.添加属性名称该属性就会生效应该使用prop();
2.是有true,false两个属性使用prop();
3.其他则使用attr();
以下是官方建议attr(),prop()的使用:
![](https://images2015.cnblogs.com/blog/992072/201607/992072-20160720001611685-1078220394.png)
原文地址:http://www.jb51.net/article/41170.htm
相关文章推荐
- php+flash+jQuery多图片上传源码分享
- JQuery为元素添加样式的实现方法
- javascript和jQuery实现网页实时聊天的ajax长轮询
- JQuery.cookie.js操作客户端cookie
- Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
- jQuery性能优化与最佳实践
- 实现jQuery底层链式编程(二)
- html css jquery怎么做开门的效果
- Jquery validation自定义验证
- jQuery中this与$(this)的区别总结
- 实现jQuery底层链式编程(一)
- jqueryuploadify的canceled请求引发SocketException: Software caused connection abort: socket write error
- Jquery Md5加密-Jquery.md5.js
- jQuery 之 获取元素的尺寸(11)
- jQuery 之 获取并设置 CSS 类(十)
- PHP文件数据传输用jQuery-ajax进行浏览器->服务器->数据文件->服务器->浏览器的数据传输($_POST,$_GET,json_encode(数组数据回应),json数据解析)
- jQuery对象[0]倒底是什么?
- 一些好用的Jquery插件
- Jquery Ajax调用aspx页面方法 (转载)
- jQuery 之 删除元素(九)