在JQuery中attr()与prop()之间的区别,以及.data()的使用

attr和prop分别是单词attribute和property的缩写,它们均表示“属性”的意思。
不过,在jQuery中,attribute和property却是两个不同的概念。
1.操作对象不同
attribute表示HTML文档节点属性,property表示JS对象的属性,
2.设计目的不同
prop()的设计目标用于设置或获取指定DOM元素(指的是JS对象,Element类型)上的属性(property);
attr()的设计目标是用于设置或获取指定DOM元素所对应的文档节点上的属性(attribute)。
3.依赖的原生JS方法不同
attr()主要依赖的是Element对象的getAttribute()和setAttribute()两个方法。
prop()主要依赖的则是js中原生的对象属性获取和设置方式。
4.应用版本不同
attr()是jQuery1.0版本就有的函数,
prop()是jQuery1.6版本新增的函数。
5.用于设置的属性值类型不同
用于attr()操作的是文档节点的属性,因此设置的属性值只能是字符串类型,如果不是字符串类型,也会调用其toString()方法将其转换为字符串类型。
prop()操作的是js对象的属性,设置的属性值可以为包括数组和对象在内的任意类型。
.data(),此方法在jq1.2.3引入,作用是把任意的值读取/存储到DOM元素对应的jq对象上。
在html5中DOM标签可以添加一些data-xxx的属性,可以把data()看作是存取data-xxx这样的DOM附加信息的方法。data()存取的内容可以是字符串、数组和对象。

		从jQuery1.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";
			虽然data()用来存数据挺方便的,它也是有过不堪回首的过去,如:
			<button id="foo" data-key="1.4000">Click me</button>
			<script>
			typeof $(‘#foo‘).data(‘key‘);
			</script>
			jQuery 1.8之前的版本输出’number’,1.8版本之后输出为’string’。
			1.8版之前,data会把值转换成基本类型,其实我们这里想要的是’1.4000′并不是1.4。
			data()设置值后,attr()不能获取设置后的值,比如:
			复制代码
			<a href="javascript:;" id="adom" data-name="doma"></a>
			<script>
				var adom = $("#adom");
				adom.data("name","name1");
				console.log("attr:"+adom.attr("data-name"));//doma
				console.log("data:"+adom.data("name"));//name1
			</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值