ホームページ > 記事 > ウェブフロントエンド > jqueryのattr()とprop()の違いは何ですか
jquery における attr() と prop() の違いは次のとおりです: attr 関数はドキュメント ノードの属性を操作し、設定される属性値は文字列型のみにすることができ、prop 関数はドキュメント ノードの属性を操作します。 js オブジェクトの属性。プロパティ値セットには、配列やオブジェクトを含む任意のタイプを使用できます。
環境:
この記事は、すべてのブランドのコンピューターに適用されます。
違いの紹介:
jQuery では、attr() 関数と prop() 関数はどちらも指定された属性を設定または取得するために使用され、それらのパラメーターと使用法はほぼ同じです。ただし、これら 2 つの関数の用途は同じではないと言わなければなりません。
(推奨チュートリアル: jquery ビデオ チュートリアル )
具体的な違いは次のとおりです:
1. 操作オブジェクトが異なります
当たり前のことですが、attr と prop はそれぞれ Attribute と Property という単語の略語であり、どちらも「属性」を意味します。
ただし、jQuery では、属性とプロパティは 2 つの異なる概念です。 AttributeはHTMLドキュメントノードの属性を表し、propertyはJSオブジェクトの属性を表します。
<!-- 这里的id、class、data_id均是该元素文档节点的attribute --> <div id="message" class="test" data_id="123"></div> <script type="text/javascript"> // 这里的name、age是Person的property var Person = { name: "小明", age: 18}; </script>
jQuery では、prop() 関数の設計目標は、指定された DOM 要素 (JS オブジェクト、要素タイプを参照) の属性 (プロパティ) を設定または取得することです。属性の設計は() 関数の目的は、指定された DOM 要素に対応するドキュメント ノードの属性を設定または取得することです。
2. さまざまなアプリケーション バージョン
attr() は jQuery バージョン 1.0 に存在する関数であり、prop() は jQuery バージョン 1.6 の新しい関数です。 1.6 より前のバージョンでは、attr() 関数のみを使用できることは間違いありませんが、1.6 以降のバージョンでは、実際のニーズに応じて対応する関数を選択できます。
3. 設定に使用される属性値のタイプは異なります
attr() 関数はドキュメント ノードの属性を操作するため、属性値セットは文字列タイプのみにすることができます。これは文字列型ではないため、文字列型に変換するために toString() メソッドも呼び出されます。
prop() 関数は JS オブジェクトのプロパティを操作するため、プロパティ値セットは配列やオブジェクトを含む任意の型にすることができます。
4. その他の詳細な問題
jQuery 1.6 より前では、attr() 関数のみが利用可能でしたが、この関数は属性の設定と取得だけでなく、属性の設定と取得も担当していました。プロパティの仕事。たとえば、jQuery 1.6 より前では、attr() は、tagName、className、nodeName、nodeType などの DOM 要素のプロパティを設定または取得することもできました。
jQuery 1.6 で prop() 関数が追加され、プロパティの設定または取得に使用されるまでは、attr() は属性の設定と取得にのみ使用されていました。
さらに、form 要素の selected、selected、disabled などの属性については、jQuery 1.6 より前では、attr() はこれらの属性の戻り値をブール型として取得していました: 選択されている (または無効になっている)の場合は true を返し、それ以外の場合は false を返します。
ただし、1.6 以降では、これらの属性の戻り値を String 型として取得するには、attr() を使用します。選択されている (または無効になっている) 場合は、checked、selected、または disabled が返され、それ以外の場合 (つまり、要素ノードにはこの属性がありません)。また、バージョンによっては、これらの属性値はドキュメントロード時の初期状態値を表しており、後でこれらの要素の選択状態(または無効状態)が変更されても、対応する属性値は変化しません。
jQuery は、属性のチェック済み、選択済み、および無効化は属性の初期状態の値を表し、プロパティのチェック済み、選択済み、および無効化はプロパティのリアルタイム状態の値を表すと考えているためです (値は true です)または偽)。
したがって、jQuery 1.6 以降のバージョンでは、チェック、選択、無効、その他のプロパティを設定または取得するには、prop() 関数を使用してください。 prop() で実装できる他の操作については、prop() 関数を使用してみてください。
<button>按钮</button> <input type="checkbox" name="" id="" checked="checked"> <script src="jquery.js"></script> <script> // $('button').on('click',function(){ // }); // var r = $('input'); $('button').on('click',function(){ console.log(11) if ($('input').prop('checked')) { $('input').prop('checked',false); }else{ $('input').prop('checked',true); } }) </script> // attr / prop // attr ==> getAttribute() / setAttribute() // 用于操作 自定义的属性,对于DOM对象自身的布尔值类型的属性,只能 // 通过这个两个方法来设置或者读取默认值,而不能动态改变值 // // prop ==> dom.checked = true; // 对于 布尔值的属性(selected/checked/diabled) 都需要通过直接访问属性 // 方式来操作(点语法、[])
ネイティブ JS が一致する要素の内部 HTML と外部 HTML を取得できることは誰もが知っています。内部は innerHTML、外部は externalHTML です。ネイティブ JS の dom オブジェクトには、これら 2 つの属性があります。
document.getElementById("linkType").outerHTML;
jQuery を使用する場合、一致する要素 (独自の要素の HTML を含む) を取得するにはどうすればよいですか?
この属性は存在するため、$("#linkType").prop("outerHTML") を使用して取得できます;
$("#linkType").prop( "outerHTML"、outerHTML) 割り当てにより、outerHTML のコンテンツを変更します;
jQuery の属性ではこの属性の値を取得できないことに注意してください。
関連する推奨事項: js チュートリアル
以上がjqueryのattr()とprop()の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。