0

したがって、テキスト入力のdisabled属性とreadonly属性をそれぞれ「disabled」と「readonly」に設定するだけです。Jqueryバージョン1.7.1を使用しています。私は次の方法を試しました:

$("#testtext").attr('disabled','disabled');
$("#testtext").attr("readonly","readonly");
$("#testtext").attr('disabled',true);
$("#testtext").attr("readonly",true);
$("#testtext").prop('disabled',true);
$("#testtext").prop("readonly",true);

結果のマークアップは次のようになります。

<input type = "text" id = "testtext" disabled />

ご覧のとおり、disabled属性を追加していますが、値を指定していません。これは一部のデバイスで機能しますが、サポートしようとしているデバイスのすべてではありません。これはjQueryが行うべきことのように思えますが、私のグーグルはこの点であまり思い付いていません。誰かアドバイスや提案はありますか?アドバイスをいただければ幸いです。ありがとうございます。

4

3 に答える 3

4
$("#testtext").prop("disabled", true);
$("#testtext").prop("readonly", true);

それらはブールフラグであるため、どこでも機能します。それらの存在は、属性に値があるかどうかに関係なく、フラグがオンになっている(要素が無効/読み取り専用)ことを示します(またはマークアップの値が何であるかさえ disabled=falseも無効になります)。

于 2013-02-06T18:43:51.477 に答える
2

.prop( propertyName ) //propertyName取得するプロパティの名前。

.attr( attributeName ) //attributeName取得する属性の名前。

仕様によると:

jQuery 1.6以降、.attr()メソッドは、設定されていない属性に対して未定義を返します。さらに、.attr()は、プレーンオブジェクト、配列、ウィンドウ、またはドキュメントでは使用しないでください。DOMプロパティを取得して変更するには、.prop()メソッドを使用します。

.prop()メソッドは、一致したセットの最初の要素のプロパティ値のみを取得します。設定されていないプロパティの値、または一致したセットに要素がない場合は、undefinedを返します。各要素の値を個別に取得するには、jQueryの.each()または.map()メソッドなどのループ構造を使用します。

属性とプロパティの違いは、特定の状況で重要になる可能性があります。jQuery 1.6より前では、.attr()メソッドは、一部の属性を取得するときにプロパティ値を考慮に入れることがあり、一貫性のない動作を引き起こす可能性がありました。jQuery 1.6以降、.prop()メソッドはプロパティ値を明示的に取得する方法を提供し、.attr()は属性を取得します。

于 2013-02-06T18:47:14.763 に答える
1

と一緒に行き.prop()ます。ブールプロパティよりも適切/信頼性が高い.attr()

プロパティは通常、シリアル化されたHTML属性を変更せずに、DOM要素の動的な状態に影響を与えます。例には、入力要素のvalueプロパティ、入力とボタンのdisabledプロパティ、またはチェックボックスのcheckedプロパティが含まれます。.attr()メソッドの代わりに、.prop() メソッドを使用して無効に設定し、チェックする必要があります

(のjqueryドキュメントから.prop()

于 2013-02-06T19:20:22.267 に答える