.ATTR対.prop()()

.ATTR対.prop()()

2012年11月1日に更新します

私のオリジナルの答えは、jQueryの1.6に特異的に適用されます。

私のアドバイスは同じままですが、jQueryの1.6.1は少し物事を変更:壊れたウェブサイトの予測山の顔には、jQueryのチームが戻っattr()に近い(しかし全く同じではない)何かにブールのためにその古い動作属性ジョンResig氏はまた、それについてブログ私は、彼らがしていた難しさを見るが、まだ好む彼の勧告に反対することができますattr()

オリジナルの答え

あなたが唯一のこれまで直接jQueryのではなくDOMを使用している場合、それは概念的には間違いなく改善されているが、これは、混乱の変化である可能性があります。しかし、この変更の結果として壊れるのjQueryを使用しているサイトのbazillionsためあまりよくありません。

私は主な問題を要約します:

  • あなたは通常したいprop()のではなくattr()
  • ほとんどの場合、prop()何をattr()行うために使用。呼び出しを交換attr()してprop()、あなたのコードは、一般的に動作しますで。
  • プロパティは、属性よりに対処するために、一般的に簡単です。プロパティは、任意のタイプのものとすることができるのに対し、属性値は、文字列であってもよいです。例えば、checkedプロパティはブール値であり、styleプロパティは各スタイルのための個々のプロパティを持つオブジェクトである、sizeプロパティが数です。
  • プロパティと同じ名前を持つ属性の両方は、通常、一方が他方を更新する更新、存在しているが、これは以下のような入力の特定の属性のためのケースではない場合valuechecked:ながら、これらの属性のために、プロパティは常に現在の状態を表します(IEの古いバージョンを除く)の属性は、(反映入力のデフォルト値/ checkednessに相当defaultValue/ defaultCheckedプロパティ)。
  • この変更は、魔法の層jQueryのjQueryの開発者は、プロパティと属性の違いについて少し学ぶ必要がありますを意味し、属性とプロパティの前で立ち往生の一部を削除します。これは良いことです。

あなたはjQueryの開発者だとプロパティと属性については、この全体の事業で混乱している場合はjQueryのは、もはやこのようなものからあなたを保護するために一生懸命しようとしているので、あなたは、バックステップを取ると、それについて少し学ぶ必要がありません。:主題に関する権威ややドライ単語については、スペックがありますDOM4HTML DOMDOMレベル2DOMレベル3をMozillaのDOMドキュメントには、最新のブラウザのために有効であり、スペックよりも読みやすいので、あなたは彼らかもしれないDOM参照が便利。あります要素のプロパティに関するセクションが

プロパティは、属性よりも対処が簡単であるかの例として、最初にチェックされているチェックボックスを考えます。ここでこれを行うには、有効なHTMLの2つの可能性のある部分は、以下のとおりです。

<input id="cb" type="checkbox" checked> <input id="cb" type="checkbox" checked="checked">

チェックボックスがjQueryを使ってチェックされているのであれば、どのように見つけるのですか?スタックオーバーフローの上に見て、あなたは、一般的に次の提案を見つけることができます:

  • if ( $("#cb").attr("checked") === true ) {...}
  • if ( $("#cb").attr("checked") == "checked" ) {...}
  • if ( $("#cb").is(":checked") ) {...}

これは実際に行うには、世界で最も簡単なものでchecked存在しており、1995年以来、すべての主要なスクリプト可能なブラウザで完璧に働いたブール型プロパティ、:

if (document.getElementById("cb").checked) {...}

プロパティは、些細なチェックボックスをチェックまたはオフになります:

document.getElementById("cb").checked = false

jQueryの1.6で、これは明確になり、

$("#cb").prop("checked", false)

使用してのアイデアcheckedのチェックボックスをスクリプトの属性は役に立たないと不必要です。プロパティには何が必要です。

  • これは、チェックボックスをチェックしたり、オフにする正しい方法を使用しているものは明らかではないchecked属性を
  • 属性値は、(IEの一部の古いバージョンで、これはまだ難しいものを作るのを除く)は、デフォルトではなく、現在の可視状態を反映しています。属性は、あなたのページのチェックボックスがチェックされているかどうかについては何も伝えていません。参照してくださいhttp://jsfiddle.net/VktA6/49/を

 

おすすめ

転載: www.cnblogs.com/chucklu/p/11549885.html