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插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
May 13 jQuery
jQuery操作css样式
May 15 jQuery
jQuery中.attr()和.data()的区别分析
Sep 03 jQuery
jquery鼠标悬停导航下划线滑出效果
Sep 29 jQuery
jquery使用iscorll实现上拉、下拉加载刷新
Oct 26 jQuery
jQuery实现简单的下拉菜单导航功能示例
Dec 07 jQuery
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
May 09 jQuery
jQuery实现的自定义轮播图功能详解
Dec 28 jQuery
JS/jQuery实现简单的开关灯效果【案例】
Feb 19 jQuery
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
Feb 27 jQuery
jQuery事件blur()方法的使用实例讲解
Mar 30 jQuery
原生jQuery实现只显示年份下拉框
Dec 24 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脚本的10个技巧(1)
2006/10/09 PHP
php 文章采集正则代码
2009/12/28 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
2013/09/26 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
jQuery 页面 Mask实现代码
2010/01/09 Javascript
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
2013/01/08 Javascript
jquery中的$(document).ready()使用小结
2014/02/14 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
javascript实现tab切换的四种方法
2015/11/05 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
jquery应用实例分享_实现手风琴特效
2018/02/01 jQuery
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
2019/04/16 Javascript
微信小程序实现图片上传
2019/05/23 Javascript
解决vue-router 二级导航默认选中某一选项的问题
2019/11/01 Javascript
Python 学习笔记
2008/12/27 Python
python处理中文编码和判断编码示例
2014/02/26 Python
在Python中使用Mako模版库的简单教程
2015/04/08 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
2016/02/17 Python
Python random模块用法解析及简单示例
2017/12/18 Python
django中的HTML控件及参数传递方法
2018/03/20 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
2018/04/27 Python
python实战串口助手_解决8串口多个发送的问题
2019/06/12 Python
Python cookie的保存与读取、SSL讲解
2020/02/17 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
伦敦时尚生活的缩影:LN-CC
2017/01/24 全球购物
本科生职业生涯规划书范文
2014/01/21 职场文书
经济担保书范文
2014/04/02 职场文书
作风建设整改方案
2014/10/27 职场文书
2014年营销工作总结
2014/11/22 职场文书
六年级学生期末评语
2014/12/26 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书
对领导班子的意见和建议
2015/06/08 职场文书