jq的attr、prop和data区别
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();
项目中jquery升级的时候大家要注意这点!
PS一下,如果你有JS性能洁癖的话,显然prop的性能更高,因为attr需要访问DOM属性节点,访问DOM是最耗时的。这种情况适用于多选项全选和反选的情况。
以下是官方建议attr(),prop()的使用:
jQuery.prop()和 jQuery.attr()方法同样都能够添加属性,但是也是有区别的,一般attr()用的比较频繁,但是有些情况用prop()更为方便。
基本的使用:
<style>.bg{width:200px; height:200px; background-color:red; } .bd{ border:1px solid #000; } </style> <body> <div></div> </body> <script> $(function(){ $("div").attr("class","bg");//样式加载成功 console.log($("div").attr('class'));//bg // $("div").prop("class",'bd');//这样会替代掉.bg console.log($("div").prop("class")); }); </script>
那么,什么时候使用attr(),什么时候使用prop()?
1.添加属性名称该属性就会生效应该使用prop();
2.是有true,false两个属性使用prop();
3.其他则使用attr();
如下实例,当checked没有在标签中定义的时候,prop就能够获取属性的值。
<body>
<input type="checkbox"> <lable>复选框</lable> </body> <script> $(function(){ console.log($("input").attr("checked"));//undefined attr是去标签中寻找该属性 console.log($("input").prop("checked"));//false prop直接获取属性内容 }); </script>
checked是true和false时,attr返回属性名,prop返回属性的值
<body>
<input type="checkbox" checked="true" aaa="bbb"> <lable>复选框</lable> </body> <script> $(function(){ console.log($("input").attr("checked"));//checked 是true和false时,attr返回属性名 console.log($("input").attr("aaa"));//bbb 不是true和false时,返回该属性的值 console.log($("input").prop("checked"));//false prop直接获取属性内容 }); </script>
以上例子看起来还是prop比较直接一点,可以考虑多用用。
补充:JavaScript的getAttribute和 jQuery.attr()的问题
首先看看JavaScript的getAttribute和 jQuery.attr()的差别,我写了两个例子,可以很明确的看出差别:
jQ加载的库是<script src="./js/jquery-1.7.2.js"></script>
<body>
<input type="text" value="1"> </body> <script> $(function(){ console.log($("input").val());//1 console.log($("input").attr("value"));//1 var timer = null; timer = setInterval(function(){ console.log($("input").val());//重新输入的值 console.log($("input").attr("value"));重新输入的值 },2000); }); </script>
<body>
<input id="amount" type="text" value="1"> </body> <script> document.addEventListener("DOMContentLoaded",function(){ var oV = document.getElementById("amount"); console.log(oV.value);//1 console.log(oV.getAttribute("value"));//1 setInterval(function(){ console.log(oV.value);//重新输入的值 console.log(oV.getAttribute("value"));//1 },2000); },false); </script>
以上两个例子中getAttribute不能够直接获取改变后的value值,只能获取初始值,而 jQuery.attr()可以;
下面看看jQuery.data()方法
<body>
<div></div> </body> <script> $(function(){ $("div").data("aaa","bbb"); console.log($("div").data('aaa'));//bbb console.log($("div").attr('aaa'));//undefined }); </script>
加在data上面的数据只有data能够取到,相当于所有的data上面的数据都在一起,方便保存和使用。
$(function(){$("div").data("aaa","bbb"); $("div").attr("aaa","ccc"); console.log($("div").data('aaa'));//bbb console.log($("div").attr('aaa'));//ccc });
尽管变量名相同的情况下,也不会受到影响。
转载于:https://www.cnblogs.com/jcxfighting/p/8480470.html
jq的attr、prop和data区别相关推荐
- 【转】data和attr的用法与区别
attr()的用法 attr()获得属性值 通过attr()获得属性时,可以这样$(selector).attr(attrName).注意,其返回值始终是string型! eg : 通过attr() ...
- attribute attr prop 区别
attr 与 prop的区别是什么? 这篇微博解释的很清楚 那么,什么时候使用attr(),什么时候使用prop()? *添加属性名称该属性就会生效应该使用prop(); *是有true,false两 ...
- jQuery中attr和prop方法的区别
2019独角兽企业重金招聘Python工程师标准>>> 相比attr,prop是1.6.1才新出来的,两者从中文意思理解,都是获取/设置属性的方法(attributes和proper ...
- jQuery 中 attr() 和 prop() 方法的区别
为什么80%的码农都做不了架构师?>>> 具有 true 和 false 两个属性的属性,如 checked, selected 或者 disabled 使用prop(),其他 ...
- jquery attr()和prop()方法的区别
$('').attr()返回的是html对象 $('').prop()返回的是DOM对象 attr(): attr() 方法设置或返回被选元素的属性和值. 当该方法用于返回属性值,则返回第一个匹配元素 ...
- DOM Node Element Attr 的联系与区别汇总
node有几个子类型:Element, Text, Attribute, RootElement, Comment, Namespace等 Element是可以有属性和子节点的node. ------ ...
- c++ string c_str() 和data()区别
看下面的英文解释: const char* c_str ( ) const; Get C string equivalent Generates a null-terminated sequence ...
- jQuery 属性操作attr().prop().text().html().val()
这些方法用于获取和设置 DOM 元素的属性. 一.attr(): <!--样式:在style里面写的,用css来操作.--> <!--属性:在元素里面写的,用attr方法操作.--& ...
- jQuery07源码 (3803 , 4299) attr() prop() val() addClass()等 : 对元素属性的操作
var nodeHook, boolHook,rclass = /[\t\r\n\f]/g,rreturn = /\r/g,rfocusable = /^(?:input|select|textare ...
- attribute property --- jquery attr() prop()
看了http://www.cnblogs.com/aaronjs/p/3387906.html ,总结下: attribute: 特性 直接写在标签上的属性,可以通过setAttribute.getA ...
最新文章
- php json 数组 区别,PHP实战:JSON两种结构之对象和数组的理解
- 统计元音(格式控制)
- python 装饰器 生成器 迭代器和闭包
- 实用 —— PowerCLI (一)
- ActiveMQ源码解析 建立连接
- 【渝粤题库】陕西师范大学163112 旅游管理英语听说 作业 (高起专)
- python可视化直方图的代码
- jQuery页面滚动右侧浮动导航切换
- android 软件apk自动更新实现注意点!!
- R语言数据框行转列实例
- 纯C下用ODBC访问数据库(实例) 转载
- iphone转android通讯录,苹果IPHONE通讯录电话簿转到安卓手机csv,vcf方法(ITUNES,OUTLOOK,EXCEL)...
- 峰值信噪比(PSNR)和均方根误差(MSE)
- SpringBoot调用腾讯云短信服务
- vscode自动快捷格式化代码_vscode格式化代码快捷键_解锁格式化的快捷键
- 计算机里的硬盘分区,Disk Genius对电脑硬盘分区的详细步骤
- 【JS】match() 方法
- android模拟器 菜单键,夜神安卓模拟器系统设置有哪些?
- 无法将类中的构造器应用到给定类型
- 将Spring Boot应用程序绑定到Cloud Foundry中的服务的方法
热门文章
- JAVA的静态函数不能重载,可以覆盖(隐藏)
- configure:3855: gcc -V 5 gcc: error: unrecognized command line option '-V'
- 南宁公交有两个应用付费通道,互不通用
- AS打包出现app:transformClassesAndResourcesWithProguardForRelease错误
- spark中local模式与cluster模式使用场景_详细总结spark基于standalone、yarn集群提交作业流程...
- C++ union联合体基础说明及应用
- 计算机组成加速比例题,计算机体系结构大题预测
- java过滤器验证app用户token_SpringCloud笔记之Zuul过滤器PreFilter实现token校验(简单样例)...
- 外贸常用术语_最常用的外贸术语大全,收藏备用
- micropython文件上传软件_MicroPython