jquery中attr、prop、data区别与用法分析


Posted in jQuery onSeptember 25, 2019

本文实例讲述了jquery中attr、prop、data区别与用法。分享给大家供大家参考,具体如下:

在高版本的jquery中获取标签的属性,可以使用attr()、prop()、data(),那么这些方法有什么区别呢?

  • 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
  • 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。
  • .data()看作是存取data-xxx这样DOM附加信息的方法

上面的描述也许有点模糊,举几个例子就知道了。

<a href="http://www.baidu.com" rel="external nofollow" target="_self" class="btn">百度</a>

这个例子里<a>元素的DOM属性有“href、target和class",这些属性就是<a>元素本身就带有的属性,也是W3C标准里就包含有这几个属性,或者说在IDE里能够智能提示出的属性,这些就叫做固有属性。处理这些属性时,建议使用prop方法。

<a href="#" rel="external nofollow" id="link1" action="delete">删除</a>

这个例子里<a>元素的DOM属性有“href、id和action”,很明显,前两个是固有属性,而后面一个“action”属性是我们自己自定义上去的,<a>元素本身是没有这个属性的。这种就是自定义的DOM属性。处理这些属性时,建议使用attr方法。使用prop方法取值和设置属性值时,都会返回undefined值。

再举一个例子:

<input id="chk1" type="checkbox" />是否可见
<input id="chk2" type="checkbox" checked="checked" />是否可见

像checkbox,radio和select这样的元素,选中属性对应“checked”和“selected”,这些也属于固有属性,因此需要使用prop方法去操作才能获得正确的结果。

$("#chk1").prop("checked") == false
$("#chk2").prop("checked") == true

如果上面使用attr方法,则会出现:

$("#chk1").attr("checked") == undefined
$("#chk2").attr("checked") == "checked"

说说.data(),我们知道 html 5里面DOM标签可以加以一些data-xxx的属性,你可以把.data()看作是存取data-xxx这样DOM附加信息的方法。当 然,.data()存取的内容不仅是字符串,还可以包含数组和对象。从jq1.4.3起, html5 的data-xxx属性会自动被添加到jq的data对象里,比如有下列代码:

<div data-role="page" data-last-value="43" data-hidden="true" data-options='{"name":"noahlu"}'></div>

下面的等式都成立:

$("div").data("role") === "page";
$("div").data("lastValue") === 43;
$("div").data("hidden") === true;
$("div").data("options").name === "noahlu";

从性能上对比,.prop() > .data() > .attr(),不同浏览器不同版本.data()和.attr()的性能关系有差异,不过.prop()总是最优的。

希望本文所述对大家jQuery程序设计有所帮助。

jQuery 相关文章推荐
原生Aajax 和jQuery Ajax 写法个人总结
Mar 24 jQuery
JQuery实现定时刷新功能代码
May 09 jQuery
JQuery 封装 Ajax 常用方法(推荐)
May 21 jQuery
jQuery实现点击关注和取消功能
Jul 03 jQuery
jQuery列表检索功能实现代码
Jul 17 jQuery
360提示[高危]使用存在漏洞的JQuery版本的解决方法
Oct 27 jQuery
利用jquery如何从json中读取数据追加到html中
Dec 01 jQuery
jQuery与vue实现拖动验证码功能
Jan 30 jQuery
详解jQuery中的isPlainObject()使用方法
Feb 27 jQuery
手写简单的jQuery雪花飘落效果实例
Apr 22 jQuery
jQuery pjax 应用简单示例
Sep 20 jQuery
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
Dec 05 jQuery
jquery.tagsinput.js实现记录checkbox勾选的顺序
Sep 21 #jQuery
jquery弹窗时禁止body滚动条滚动的例子
Sep 21 #jQuery
jQuery设置下拉框显示与隐藏效果的方法分析
Sep 15 #jQuery
基于jquery ajax的多文件上传进度条过程解析
Sep 11 #jQuery
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
Sep 10 #jQuery
jQuery实现每日秒杀商品倒计时功能
Sep 06 #jQuery
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
Sep 03 #jQuery
You might like
10 个经典PHP函数
2013/10/17 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
2014/04/29 PHP
php实现的替换敏感字符串类实例
2014/09/22 PHP
PHP编程中尝试程序并发的几种方式总结
2016/03/21 PHP
PHP简单创建压缩图的方法
2016/08/24 PHP
10个值得深思的PHP面试题
2016/11/14 PHP
PHP curl 或 file_get_contents 获取需要授权页面的方法
2017/05/05 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
js实现目录定位正文示例
2013/11/14 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
jquery常用函数与方法汇总
2015/09/01 Javascript
JavaScript模板引擎Template.js使用详解
2016/12/15 Javascript
AngularJS实现路由实例
2017/02/12 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
微信小程序实现长按删除图片的示例
2018/05/18 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
vue 监听窗口变化对页面部分元素重新渲染操作
2020/07/28 Javascript
在Django中创建第一个静态视图
2015/07/15 Python
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
浅谈flask中的before_request与after_request
2018/01/20 Python
Python对象属性自动更新操作示例
2018/06/15 Python
用Python逐行分析文件方法
2019/01/28 Python
详解Python3 中的字符串格式化语法
2020/01/15 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
html5生成柱状图(条形图)效果的实例代码
2016/03/25 HTML / CSS
世界上最大的字体市场:MyFonts
2020/01/10 全球购物
群众路线批评与自我批评
2014/02/06 职场文书
2014年五一促销活动方案
2014/03/09 职场文书
运动会加油口号
2014/06/07 职场文书
2015年上半年信访工作总结
2015/03/30 职场文书
2015年信息中心工作总结
2015/05/25 职场文书
医院感染管理制度
2015/08/05 职场文书
新学期感想
2015/08/10 职场文书