속성과 속성
속성과 속성은 모두 속성으로 번역될 수 있습니다. 차이점을 보여주기 위해 이 두 단어는 일반적으로 속성과 특성으로 번역됩니다.
위의 HTML 문에는 요소 "div", 속성 "id", 텍스트 "여기를 클릭"이라는 세 가지 노드가 있습니다. 공식적으로는 속성 유형 노드를 참조하는 특별한 처리 방법이 있습니다. JavaScript의 속성. Function.getAttribute(name) / setAttribute(name,value). 물론 속성은 HTML 문서에서 볼 수 있는 것만이 아닙니다. 속성을 사용자 정의하고 DOM 노드에 추가할 수도 있습니다
코드 복사
setAttribute 메소드를 통해 설정된 속성은 결국 요소의 속성 유형 노드에 반영됩니다.속성과 속성이 서로 아무런 관련이 없는 것 같은데, 왜 그럴까요? . . 많은 속성 노드에도 해당 속성 속성이 있기 때문에 속성과 속성이 쉽게 혼동됩니다. 예를 들어 위 div의 "id" 속성은 t.id를 사용하여 얻을 수도 있습니다(실제로 대부분의 사람들은 이 방법으로 얻습니다). 속성을 통해 ID를 변경하면 getAttibute로 얻은 ID가 업데이트된 ID입니다.
코드 복사
코드 복사
1. 내장 속성과 관련하여 속성 및 속성 공유 데이터는 속성이 변경되면 속성에 영향을 미치며, 그 반대의 경우도 마찬가지입니다. 동일하므로 서로 영향을 미치지 않습니다. 아래 그림과 같지만 IE6과 7 사이에는 차이가 없으며 여전히 사용자 정의 속성 데이터를 공유합니다
코드 복사
4. 对于一些和路径相关的属性,两者取得值也不尽相同,但是同样attribute取得是字面量,property取得是计算后的完整路径
attr和prop
相信看完上面内容,大家就明白为什么jQuery要添加prop方法了,在jQuery API中也有专门解释
Attributes VS. Properties
在一些特殊的情况下,attributes和properties的区别非常大。在jQuery1.6之前,.attr()方法在获取一些attributes的时候使用了property值,这样会导致一些不一致的行为。在jQuery1.6中,.prop()方法提供了一中明确的获取property值得方式,这样.attr()方法仅返回attributes。
比如,selectedIndex, tagName, nodeName, nodeType, ownerDocument, defaultChecked, 和defaultSelected应该使用.prop()方法获取/设置值。 在jQuery1.6之前这些不属于attribute的property需要用.attr()方法获取。这几个并没有相应的attibute,只有property。
关于布尔类型 attributes,比如一个这样的HTML标签,它在JavaScript中变量名为elem
elem.checked |
true (Boolean) Will change with checkbox state |
$( elem ).prop( "checked" ) |
true (Boolean) Will change with checkbox state |
elem.getAttribute( "checked" ) |
"checked" (String) Initial state of the checkbox; does not change |
$( elem ).attr( "checked" ) (1.6)
|
"checked" (String) Initial state of the checkbox; does not change |
$( elem ).attr( "checked" ) (1.6.1+)
|
"checked" (String) Will change with checkbox state |
$( elem ).attr( "checked" ) (pre-1.6)
|
true (Boolean) Changed with checkbox state |