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实现全选、全不选以及单选功能
Mar 23 jQuery
jQuery实现select下拉框获取当前选中文本、值、索引
May 08 jQuery
jQuery列表检索功能实现代码
Jul 17 jQuery
jQuery实现切换隐藏与显示同时切换图标功能
Oct 29 jQuery
jQuery实现适用于移动端的跑马灯抽奖特效示例
Jan 18 jQuery
在vue项目中使用Jquery-contextmenu插件的步骤讲解
Jan 27 jQuery
JS 遍历 json 和 JQuery 遍历json操作完整示例
Nov 11 jQuery
基于jQuery实现可编辑的表格
Dec 11 jQuery
JQuery常用选择器功能与用法实例分析
Dec 23 jQuery
jQuery 选择方法及$(this)用法实例分析
May 19 jQuery
Jquery使用each函数实现遍历及数组处理
Jul 14 jQuery
jQuery实现简单全选框
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 读取文件的正确方法
2009/04/29 PHP
php fckeditor 调用的函数
2009/06/21 PHP
Zend Framework动作助手Url用法详解
2016/03/05 PHP
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
常用的JavaScript验证正则表达式汇总
2013/11/26 Javascript
详解JavaScript中的异常处理方法
2015/06/16 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
2015/06/19 Javascript
jquery实现简单实用的弹出层效果代码
2015/10/15 Javascript
Javascript动画效果(3)
2016/10/11 Javascript
jQuery之动画效果大全
2016/11/09 Javascript
js实现背景图自适应窗口大小
2017/01/10 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
2018/01/31 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
教你搭建按需加载的Vue组件库(小结)
2019/07/29 Javascript
微信小程序事件 bindtap bindinput代码实例
2019/08/26 Javascript
在vue-cli中引入lodash.js并使用详解
2019/11/13 Javascript
JS实现躲避粒子小游戏
2020/06/18 Javascript
[02:09]EHOME夺得首届辉夜杯冠军—现场颁奖仪式
2015/12/28 DOTA
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
python实现生命游戏的示例代码(Game of Life)
2018/01/24 Python
python调用java的jar包方法
2018/12/15 Python
Python多项式回归的实现方法
2019/03/11 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
实现Python与STM32通信方式
2019/12/18 Python
python 读取yaml文件的两种方法(在unittest中使用)
2020/12/01 Python
请解释接口的显式实现有什么意义
2012/05/26 面试题
会计电算一体化个人简历的自我评价
2013/10/15 职场文书
事业单位请假制度
2014/01/13 职场文书
化学专业大学生职业生涯规划范文
2014/09/13 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
辛亥革命观后感
2015/06/02 职场文书
详解vue身份认证管理和租户管理
2021/05/25 Vue.js
Spring Security中用JWT退出登录时遇到的坑
2021/10/16 Java/Android
python解析照片拍摄时间进行图片整理
2022/07/23 Python