prop(),attr(),data()区别

prop(),attr(),data()这三个aqi会频繁使用,但是它们之间的区别你真的知道吗?

attr()和data()都可以做到存储数据,区别如下:

类型 .attr() .data()
定义 设置或返回被选元素的属性和值(着重于属性) 设置或返回被选元素的数据(着重于数据)
返回类型 始终是string型 对静态绑定的数字、布尔、对象、数组和null进行转换
命名规则 大小写不敏感 key必须全小写
取值 $(selector).attr(attribute) $(selector).data(name)
设置 $(selector).attr(attribute,value) $(selector).data(name,value)

prop()和attr()都可以取到属性的值,建议使用prop()来取元素固有属性(通常是由true,false来控制元素),attr()获取自定义属性,如下:

Attribute/Property .attr() .prop()
accesskey
align
async
autofocus
checked
class
contenteditable
draggable
href
id
label
location ( i.e. window.location )
multiple
readOnly
rel
selected
src
tabindex
title
type
width ( if needed over .width() )

栗子🌰

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <label>测试</label>
    <input type="radio" class="radioTest1" data-Id="11" value="1">未选
    <input type="radio" class="radioTest2" data-Id="12" value="2" checked>选中
</body>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
    $(function(){
        var dataId       = $(".radioTest1").data("Id")
        var dataid       = $(".radioTest1").data("id")
        var attrId       = $(".radioTest1").attr("data-Id")
        var attrid       = $(".radioTest1").attr("data-id")
        var attrChecked  = $(".radioTest1").attr("checked")
        var propChecked  = $(".radioTest1").prop("checked")
        var attrChecked2 = $(".radioTest2").attr("checked")
        var propChecked2 = $(".radioTest2").prop("checked")

        console.log("data大写id:"+dataId,"类型为:"+ typeof(dataId))
        console.log("data小写id:"+dataid,"类型为:"+ typeof(dataid))

        console.log("attr大写id:"+attrId,"类型为:"+ typeof(attrId))
        console.log("attr小写id:"+attrId,"类型为:"+ typeof(attrId))

        console.log("attr1:"+attrChecked,"类型为:"+ typeof(attrChecked))
        console.log("prop1:"+propChecked,"类型为:"+ typeof(propChecked))

        console.log("attr2:"+attrChecked2,"类型为:"+ typeof(attrChecked2))
        console.log("prop2:"+propChecked2,"类型为:"+ typeof(propChecked2))

        $(".radioTest2").data("id","13")//在dom上看不到更改
        $(".radioTest2").attr("data-id","13")//在dom上可看到更改
    })
</script>
</html>


运行结果(仔细对比,你将发现它们之间的不同):


18D2420C-F041-4B59-8160-8411D601074F.png

问答💋

Q:为什么赋值时不会显示在dom元素上?
A:在js里第一调用data()时,会将HTML里静态绑定的数据,存储到jQuery.cache变量中,之后的赋值和取值都是在cache中操作

Q:为什么data区分大小写?
A:在js里第一调用data()时,存储到jQuery.cache变量中,对key做相应的小写转换,再次使用data()修改数据或添加新数据时,对key不会再进行小写转换,也不会对数据做类型转换

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354

推荐阅读更多精彩内容

  • 一、样式篇 第1章 初识jQuery (1)环境搭建 进入官方网站获取最新的版本 http://jquery.co...
    凛0_0阅读 3,380评论 0 44
  • 第一章 jQuery简介 1-1 jQuery简介 1.简介 2.优势 3.特性与工具方法 1-2 环境搭建 进入...
    mo默22阅读 1,583评论 0 11
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,654评论 18 139
  • 各自性能作用 attr(),此方法从jq1.0开始一直存在,作用是读/写DOM的attribute值; .prop...
    巩小白阅读 2,547评论 1 8
  • 静不下心读书。 静不下心学习与工作,成日坐在办公室无所事事。作为初入职场的小白,学不到任何东西恐怕是名列首位的恐惧...
    属于Dn的思想空间阅读 150评论 0 0