jQuery中attr()和prop()在修改checked属性时的区别,jqueryattr
jQuery中attr()和prop()在修改checked属性时的区别,jqueryattr
在做复选框全选按钮的时候,出现了一个问题,使用语句$.attr('checked',true),将复选框的属性改为被选中,在chrome浏览器中第一次点击有效后面就不行了,IE8倒是没有问题。
百度了很久找到原因是HTML的属性分为attribute和property,暂且将后者称为特性。
checked属性即分为attribute->checked,和property->true,false。
对于一个checkbox,若未定义checked="checked",alert($.attr("checked")) 的结果是undefined。若已定义则结果是checked。attribute并不随着checkbox的状态变化而改变。
使用prop($.attr("checked"))的话输出则分别为false和true。property则随其变化而变化。
所以在修改checked属性时要使用prop()。prop()在jQuery1.6版本后新增。
网上关于其他类似属性的图表:
另外关于在IE9之前版本中,如果property没有在DOM元素被移除之前删除,使用.prop()方法设置DOM元素property(简单类型除外:number、string、boolean)的值会导致内存泄露。为了安全的设置DOM对象的值,避免内存泄露,可以使用.data()方法。 目前尚未遇到,先记在这里。
prop()获取匹配的元素的属性值。
这个方法是jquery1.6以后出来的,用来区别之前的.attr()方法.
区别最大的一点就是:布尔型的属性,1.6以后都是用.prop()方法就好了。
这个布尔型的属性,再解释一下,是属性值只有true|false的属性。
还有种情况就是只添加属性名,不需要写属性值的就可以生效的也同样使用.prop()方法。比如:checked、disable这样的,其实它们说到底还是属于布尔型的属性。
1.添加属性名称该属性就会生效应该使用prop();
2.是有true,false两个属性使用prop();
3.其他则使用attr();
type属性是只读的
可以$("input").hide()
或者$("input").attr("style","display:none");
试试吧
相关内容
- jQuery新的事件绑定机制on()示例应用,jqueryon
- JQuery对表单元素的基本操作使用总结,jquery基本操作
- 关于javaScript注册click事件传递参数的不成功问题,jav
- 利用 Linq+Jquery+Ajax 实现异步分页功能可简化带宽压力,
- 使用AjaxFileUpload.js实现异步文件上传示例,ajax文件上传
- Jquery $.ajax函数外的一段代码的执行顺序,jquery.ajax
- JS AJAX前台如何给后台类的函数传递参数,jsajax
- ajax使用不同namespace的action的方法,ajaxnamespace
- 12 个非常实用的 jQuery 代码片段
评论关闭