2013-10-08 14 views
44

idはHTMLの属性またはプロパティですか?HTML属性とプロパティ

は、私は多くの記事を読んで、まだ混乱してきました$('#selector').attr('id');または$('#selector').prop('id');

を行う必要があります。

HTML/JSの属性&のプロパティは非常に単純な言語で表示されていますか?

+6

http://stackoverflow.com/questions/5874652/prop-vs-attr – Satpal

+3

@Satpalこの質問は違いが何であるかを尋ねている間にリンクされ、質問はjQueryの機能の違いを求めていますHTMLのプロパティと属性の間 – Trisped

答えて

112

属性はHTMLで定義されます。プロパティはDOMによって定義されます。

一部のHTML属性には、プロパティへの1:1マッピングがあります。 idはその一例です。

一部は(例えばvalue属性は入力の初期値を指定しますが、valueプロパティは現在値を指定)しません。

+0

常にすべての属性に対応するプロパティがありますか?属性の値とプロパティの値の間には常に1:1の最初のマッピングがありますか? –

+2

@KevinWheeler - いいえ、いいえ。 – Quentin

4

はい、attrは厳密に定義されているので、html属性を対象としています。小道具は物件のためのものです。

たとえば、クラス "something"(jQueryオブジェクトではない生の要素)を持つノードelemがあるとします。 elem.classNameはプロパティですが、属性が存在する場所です。クラス属性を変更すると、プロパティも自動的に変更されます。

現在のところ、attrは両方の機能の仕事に挑戦しているので混乱し混乱しています。そのために多くのバグがあります。 jQuery.fn.propの導入により、いくつかのブロッカーが解決され、最初から分離されていたはずのコードが分離され、開発者は期待することをより速やかに実行できます。

私は、IRCサポートと他のコードを読んだ経験から、attrの使用例の95%がpropに切り替える必要はないと言います。

See More