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 相关文章推荐
jQuery Plupload上传插件的使用
Apr 19 jQuery
jQuery实现鼠标滑过预览图片大图效果的方法
Apr 26 jQuery
简述jQuery Easyui一些用法
Aug 01 jQuery
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
Sep 20 jQuery
jQuery实现的鼠标响应缓冲动画效果示例
Feb 13 jQuery
jQuery实现的点击按钮改变样式功能示例
Jul 21 jQuery
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
Aug 09 jQuery
jquery.pagination.js分页使用教程
Oct 23 jQuery
jQuery操作cookie的示例代码
Jun 05 jQuery
jQuery三组基本动画与自定义动画操作实例总结
May 09 jQuery
jQuery实现B2B网站后台管理系统侧导航
Jul 08 jQuery
jQuery+ajax实现用户登录验证
Sep 13 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
php基础学习之变量的使用
2011/06/09 PHP
解析PHP中intval()等int转换时的意外异常情况
2013/06/21 PHP
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
两款万能的php分页类
2015/11/12 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
2016/03/17 PHP
jquery 年会抽奖程序
2011/12/22 Javascript
javascript 事件处理示例分享
2014/12/31 Javascript
js控制输入框获得和失去焦点时状态显示的方法
2015/01/30 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
jquery滚动特效集锦
2015/06/03 Javascript
学习JavaScript设计模式之观察者模式
2020/04/22 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
jQuery ajax应用总结
2016/06/02 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
jQuery实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 jQuery
JS实现瀑布流效果
2020/03/07 Javascript
Javascript中Math.max和Math.max.apply的区别和用法详解
2020/08/24 Javascript
python网页请求urllib2模块简单封装代码
2014/02/07 Python
详解python中的json的基本使用方法
2016/12/21 Python
Python中列表与元组的乘法操作示例
2018/02/10 Python
python 将字符串转换成字典dict的各种方式总结
2018/03/23 Python
使用TensorFlow实现二分类的方法示例
2019/02/05 Python
一篇文章搞定Python操作文件与目录
2019/08/13 Python
Python中__repr__和__str__区别详解
2019/11/07 Python
使用Python防止SQL注入攻击的实现示例
2020/05/21 Python
python 5个实用的技巧
2020/09/27 Python
纯CSS实现的大小渐变、渐远效果
2014/04/15 HTML / CSS
日本网路线上商品代购服务:转送JAPAN
2016/08/05 全球购物
《桂林山水》教学反思
2014/02/08 职场文书
大学专科求职信
2014/07/02 职场文书
领导干部对照检查材料
2014/08/24 职场文书
大学生团日活动总结
2015/05/06 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
党章党规党纪学习心得体会
2016/01/14 职场文书
优秀员工演讲稿
2019/06/21 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书