5

私が知る限り、.prop() 関数は .attr() 関数が実行できるすべてのことを実行できますが、一般的にはより安全で簡単な方法で実行できます。

例えば:

  • HTML のチェックボックスのデフォルト状態を取得したい場合は、$('myCheckbox').prop('defaultChecked')(の代わりに$('myCheckbox').attr('checked')) 実行できます。チェックボックスが動的に変更された場合、値を維持しながら属性の値が失われる可能性があるため、これは実際には を使用するよりも安全に思えます (例: http://jsfiddle.net/p1Lrgwnb/1/ ) 。.attr('checked').prop('defaultValue')
  • StackOverflow の例では、や.attr()などの値と一貫して使用されることがよくありますが、それらでも問題なく動作します。伝統的な慣習や習慣以外に、これらの価値観が好まれる理由を私は知りません。idname.prop().attr()

使用する必要があるユースケース、.attr()または.prop()関数が必要な情報を提供しないユースケースはありますか?

編集:.prop()この質問は、 と の違いとは何の関係もありません.attr()以下にリンクされているもの( stackoverflow.com/questions/5874652/prop-vs-attr )を含め、StackOverflowに関するこれらの質問を詳細に調査しました。私の質問から、私がこの 2 つの違いを完全に理解していることは明らかです。おそらくほとんどの人よりも優れています。私の質問は、.attr() を使用しなければならない状況があるかどうかです。これは、.prop() と .attr() とはまったく異なる質問です。

4

1 に答える 1

3
<input id="check1" checked="checked" type="checkbox" />
.attr('checked') //returns  checked
.prop('checked') //returns  true
.is(':checked') //returns true

prop メソッドは、checked、selected、disabled、readOnly などのブール値を返しますが、attr は定義された文字列を返します。したがって、 if 条件で .prop('checked') を直接使用できます。

.attr() は .prop() を内部的に呼び出すため、.attr() メソッドは .prop() を介して直接アクセスするよりもわずかに遅くなります。

jQuery 1.6+ の場合、シンプルで attr より幅が広いため、主に prop が使用されます。ほとんどの古いプロジェクトでは、要素の現在の状態情報を取得するために attr が使用されます。しかし、prop がこの仕事を引き継いでおり、attr は prop に置き換えられます。

このリンクを確認してください

于 2016-07-31T13:43:09.940 に答える