104
4

4 に答える 4

71

残念ながら、あなたのリンクはどれも機能しません:(

ただし、いくつかの洞察attrは、すべての属性に関するものです。propプロパティ用です。

古いバージョンの jQuery (<1.6) では、attr. nodeNameselectedIndex、またはなどの DOM プロパティにアクセスするには、defaultValue次のようにする必要があります。

var elem = $("#foo")[0];
if ( elem ) {
  index = elem.selectedIndex;
}

それはひどいので、prop追加されました:

index = $("#foo").prop("selectedIndex");

これは素晴らしいことでしたが、厄介なことに、これは下位互換性がありませんでした。

<input type="checkbox" checked>

には の属性はありcheckedませんが、 というプロパティがありますchecked

そのため、1.6 の最終ビルドでは、問題が発生attrしないようにすることも行いpropます。きれいに切れてほしいという声もありましたが、あちこち壊れなかったので正解だったと思います!

それにかんする:

Prop: JavaScript による変更後の現在の状態の値

Attr: ページ読み込み時に html で定義された値。

属性が実際に何度も変更されるため、これは常に正しいとは限りませんが、checked などのプロパティの場合、変更する属性がないため、prop を使用する必要があります。

参考文献:

http://blog.jquery.com/2011/05/03/jquery-16-released/

http://ejohn.org/blog/jquery-16-and-attr

于 2012-11-06T08:31:56.227 に答える
3

.prop と .attr の違いを確認する明確なケースがあります。

以下の HTML を検討してください。

<form name="form" action="#">
    <input type="text" name="action" value="myvalue" />
    <input type="submit" />
</form>
<pre id="return">
</pre>

jQuery を使用した以下の JS :

$(document).ready(function(){
    $("#return").append("$('form').prop('action') : " + $('form').prop('action') + '\r\n');
    $("#return").append("$('form').attr('action') : " + $('form').attr('action') + '\r\n');
    $("#return").append("document.form.action : " + document.form.action);
});

次の出力を作成します。

$('form').prop('action') : [object HTMLInputElement]
$('form').attr('action') : #
document.form.action : [object HTMLInputElement]
于 2013-04-11T12:36:54.637 に答える
1

私はこれを試しました

console.log(element.prop(property));
console.log(element.attr(property));

そして、それは以下のように出力されます

http://fiddle.jshell.net/test/
/test/ 

これは、 が で読み取らactionた場合にのみ正規化されることを示している可能性があります。prop

于 2012-11-06T08:33:21.610 に答える
1

jquery 1.6.1+ attr() は 1.6 以前のようにプロパティを返したり変更したりします。したがって、テストはあまり意味がありません。

戻り値の小さな変更に注意してください。

例えば

attr('checked'): 1.6.1 以降、1.6 より前は true/false が返されます。「チェックあり」/「未定義」を返します。

attr('selected'): 1.6.1 以前は true/false が返されましたが、1.6.1 では "selected"/undefined が返されました。

このトピックのドイツ語での詳細な概要は、次の場所にあります。

http://mabraham.de/jquery-prop-attr-val-richtig-verwenden/

于 2014-07-27T12:35:45.707 に答える