JQuery 1.6.1 RCがリリースされました

jQuery 1.6の最初の更新に近づいており、最初のリリース候補のリリースを発表できることを嬉しく思います! このコードは最終バージョン1.6.1に移行する可能性があります(週の終わり近くにリリースされます)-(可能性のある)重大なバグを除くすべてはもちろんです。

jQuery CDNからコードをダウンロードできます。
http://code.jquery.com/jquery-1.6.1rc1.js

このコードを作業中のアプリケーションに配置し、何かが機能しなくなった場合に通知することで、私たちを支援できます。 この場合、jQuery 1.6.1 RC 1を具体的にテストしていることを確認し、バグ開始してください

jQueryコアに便利な変更を加えるために、コミュニティメンバーによるイニシアチブを奨励します。 このプロセスを簡素化するために設計された詳細情報を含むページ全体を用意しました。 私たちのチームがここにいます。

1.5.2から1.6.1に更新


新しい.prop()メソッドの出現、 .prop()メソッドの操作の変更により、属性とプロパティの違いとそれらの関係についての全体的な議論が生じました。 さらに、16.1で修正された下位互換性の問題がいくつかありました。 つまり、 1.5.2から1.6.1にアップグレードする場合、古いコードを変更する必要はありません

以下に、jQuery 1.6および1.6.1の属性モジュールの変更点の説明と、 .attr()および.prop()メソッドの推奨使用方法に関する推奨事項を示します。 ただし、再び、jQuery 1.6.1では、 .attr()まったく同じように.attr()メソッドにアクセスできます。

変更履歴

属性モジュールの最近の変更により、属性とプロパティの動作のあいまいさとあいまいさが解消されましたが、同時にjQueryコミュニティのランクに混乱が生じました。 1.6までのjQueryのすべてのバージョンは、1つのメソッド( .attr() )のみを使用して属性とプロパティの両方を処理しました。 以前の.attr()メソッドには多くのバグが含まれていて、保守が容易ではありませんでした。

jQuery 1.6.1ではいくつかのバグが修正され、「属性」モジュールも更新されました(再び)。

したがって、1.6.1のブール属性(checked、selected、readonly、disabledなど)は、jQueryの以前のバージョンとまったく同じように動作します(最大1.6)。 したがって、このようなコード:

$(“:checkbox”).attr(“ checked ”, true );
$(“option”).attr(“selected”, true );
$(“input”).attr(“ readonly ”, true );
$(“input”).attr(“disabled”, true );


* This source code was highlighted with Source Code Highlighter .

またはこれでさえ:

if ( $(“:checkbox”).attr(“ checked ”) ) { /* Do something */ }

* This source code was highlighted with Source Code Highlighter .

-1.6.1に切り替えても変更できず、そのままにしておくことができます(何も壊れません)。

.attr()メソッドに関してjQuery 1.6で行われた変更の本質を明確にするために、jQueryの以前のバージョンで動作していたいくつかの例に助けられます。

.attr()適切な.prop()の使用
$(ウィンドウ).attr ...$(ウィンドウ).prop ...
$(ドキュメント).attr ...$(ドキュメント).prop ...
$(「:チェックボックス」)。Attr(「チェック済み」、true);$(“:チェックボックス”)。Prop(“チェック済み”、true);
$(「オプション」)。Attr(「選択」、true);$(「オプション」)。Prop(「選択」、true);

まず、ウィンドウまたはドキュメントで.attr()メソッドを呼び出しても、jQuery 1.6では機能しません。 ウィンドウとドキュメントには属性がありません。 これらには、プロパティ(たとえば、locationまたはreadyState)のみが含まれます。これらは、 .prop()メソッドまたは純粋なjavascriptを使用して操作する必要があります。 jQuery 1.6.1では、エラーを.attr()代わりにウィンドウまたはドキュメントで呼び出される.attr()メソッドは、単に.prop()メソッドを呼び出します。

さらに、checked、selected、および上記の他の属性は特別な方法で処理されます。 これらの属性と対応するプロパティの間には特別な関係があります。 最も単純な場合、属性はhtmlに表示されるものです。

< input type =” checkboxchecked =” checked>

* This source code was highlighted with Source Code Highlighter .

ブール属性(例:チェック)は、デフォルト値のみを設定します(ページの初期化中)。 チェックボックスの場合、checked属性は、ページの読み込み時にチェックマークを表示するかどうかを決定します。

プロパティは、ブラウザが現在の値の変更を反映する場所です。 通常、プロパティ値は対応する属性の値を反映します(存在する場合)。 ただし、ブール属性の場合、すべてが異なります。 ユーザーがチェックボックスをオフにするか、ドロップダウンリストから項目を選択した場合、ブールプロパティは(現在の値で)最新のままです。 対応する属性はありません(上記のように、デフォルト値を保存するためにのみ使用されます)。

$(“:checkbox”).get(0). checked = true ;
// , $( ":checkbox:first" ).prop(“ checked ”, true );


* This source code was highlighted with Source Code Highlighter .

jQuery 1.6では、このチェックボックスを動的にチェックする方法:

$(“:checkbox”).attr(“ checked ”, true );

* This source code was highlighted with Source Code Highlighter .

もはや機能しません ここでは、属性ではなくプロパティを変更する必要がありました。 達成したのは、デフォルト値を変更することだけです。

ただし、jQuery 1.6がリリースされたとき、jQuery開発チームは、ページの読み込み時に、ブラウザがまだ1回しか読み取らないデフォルト値を設定するという、これはおそらく非常に有用な機会ではないことに気付きました。 したがって、この事実を考慮し、後方互換性を維持するために、jQuery 1.6.1の.attr()メソッドを使用してブール属性値を設定する機能を返すことにしました。

最も一般的なブール属性は、チェック、選択、無効化、および.attr()ですが、それらの完全なリストは次の.attr()メソッドを使用してjQuery 1.6.1で値を動的に取得/設定するために使用できる属性とプロパティ):

autofocus, autoplay, async, checked , controls, defer, disabled, hidden, loop, multiple, open, readonly , required, scoped, selected

* This source code was highlighted with Source Code Highlighter .

.prop()を使用してブール属性/プロパティを設定することをお勧めしますが、古いコードは何も起こらなかったかのようにjQuery 1.6.1で引き続き動作します。

以下に、いくつかの属性とプロパティのリストと、それらの値を変更するために使用することが推奨されるメソッドの指示を示します(繰り返しますが、これは推奨される使用方法です。すべての場合において.attr()メソッド.attr()引き続き動作します)。

属性/プロパティ
.attr()
.prop()
アクセスキー


揃える


非同期


オートフォーカス


チェック済み


クラス


コンテンツ編集可能


ドラッグ可能


href


id


ラベル


場所(window.locationなど)


複数


readOnly


rel


選択された


src


tabindex


タイトル


タイプ


幅( .width()をオーバーラップする場合)




.attr().attr()も値の書き込み/読み取りには推奨されません-この目的のために.val() (ただし、 .attr(“value”, “somevalue”)も機能します) 1.6)。

合計(優先使用)

.prop()メソッドは、ブール属性/プロパティ、およびhtmlに存在しないプロパティ(window.locationなど)で使用することをお勧めします。 他のすべての属性(htmlにある属性)を使用した.attr()は、 .attr()メソッドを使用して古い方法で実行できます(および実行する必要があります.attr()

Source: https://habr.com/ru/post/J119134/


All Articles