首页 > Web开发 > 详细

jQuery中 attr() 和 prop() 的区别

时间:2020-07-14 14:35:33      阅读:70      评论:0      收藏:0      [点我收藏+]

一、概述

某些情况下,attr()prop() 取到的结果是一致的,都可以获取到属性的值。直到踩了一些坑才意识到,应该按照规范使用才能避免不必要的麻烦.

尽管在web编程都被翻译成“属性”,但是两者是有所区别的,否则也不会有attr()和prop()两个函数的出现。

如果你有到官网查看,你可能会说,这**什么鬼,完全一头雾水。

下面是在jQuery翻译文档中找到的还算“比较清楚”的描述:

Attributes vs. Properties

attributes和properties之间的差异在特定情况下是很重要。jQuery 1.6之前 ,.attr()方法在取某些 attribute 的值时,会返回 property 的值,这就导致了结果的不一致。从 jQuery 1.6 开始, .prop()方法 方法返回 property 的值,而 .attr() 方法返回 attributes 的值。

1.1attribute

此属性在web编程中,一般是标签中的属性,例如的id属性,它仅仅是一个描述,就好比说张三长的很帅,具有两只眼睛一个鼻子一样。attribute属性值只能够是字符串。

1.2property

一般指的对象中的属性,也就是使用点号(.)访问的属性,它明确的指向内存中的一个内存地址中存放的内容。它是真正编程中所说的属性。property属性值可以是各种类型的。

1.3两者关系(relation)

javascript是用来操作DOM,DOM对象不但具有HTML特性也继承了Object对象的特性。从上面的介绍中,我们可以知道,Object是使用Property的,而attribute属性则是HTML使用,虽然这两种属性被继承到同一个对象身上,但是并不冲突,有些HTML元素内置的属性会被映射到property,例如id和class,不过由于class是ECMAScript中的保留字,所以被映射到className这个property上。

二、演示

2.1CODE

在Document中定义两个标签:

<input type=?"checkbox" id=?"checked" checked=?"checked"  data-name="langkye">?
<input type=?"checkbox" id=?"no-checked"  data-name="langkye">?
  • 通过操作不同的属性,比较两者区别
  1. checked
$("#checked")[0];  // <input type=?"checkbox" checked=?"checked" id=?"check" class=?"laytable-cell-checkbox" data-name="langkye">?
$("#no-checked")[0];  // <input type=?"checkbox" id=?"no-checked" class=?"laytable-cell-checkbox" data-name="langkye">?
$("#check").prop("checked");  // true
$("#checked").attr("checked");  // "checked"
/* --------------------------------------- */
$("#no-checked").prop("checked");  // undefined
$("#no-checked").attr("checked");  // false
  1. id
$("#check").prop("id");  // "check"
$("#check").attr("id");  // "check"
  1. 自定义属性
$("#no-check").attr("data-name");  // "langkye"
$("#no-check").prop("data-name");  // undefined

2.2SUMMRIZE

从上面的结果看出:

??对于W3C组织给HTML预设的属性,使用prop()来进行操作

??对于我们自定义的属性,使用attr()来进行操作

??实际上就是Attribute使用attr()来进行操作;Property使用prop()来操作

  • 如果难以区分两者,在操作得不到预期结果,切换尝试即可。

jQuery中 attr() 和 prop() 的区别

原文:https://www.cnblogs.com/langkyeSir/p/13298588.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!