国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ ウェブフロントエンド jsチュートリアル jquery で attr() をいつ使用するか、prop() を使用するか?

jquery で attr() をいつ使用するか、prop() を使用するか?

Jun 17, 2017 pm 01:43 PM
jquery 使用

誰かが複數(shù)を與えました プラグインを選択するさんが質(zhì)問しました:

setSelects jQuery 1.9.0 を使用すると Firefox で動作しない 私は jQuery 1.8.3 バージョンを使用しており、jQuery 1.9.0 バージョンは試していません。

それでは、1.9.0 バージョンではコードの デバッグを開始します:

<input type="checkbox" />
<script>
????$(function()?{
????????$('input').click(function()?{
????????????$(this).attr('checked');
????????});
????});
</script>

チェックボックスをクリックすると、結(jié)果はすべて未定義になります

そして、1.8.3 バージョンでは、結(jié)果はチェックされ、未定義になります

この時(shí)點(diǎn)で、attr() メソッドの使用の問題である問題の答えが見つかったので、公式ドキュメントを確認(rèn)したところ、jQuery 1.6 からは新しいメソッド prop() があることがわかりました。 、しかし、それは一度も使用されていません。 中國語の意味からすると、これらはそれぞれ屬性とプロパティを取得/設(shè)定するメソッドですが、なぜ prop() メソッドを追加する必要があるのでしょうか?

Before?jQuery?1.6,?the?.attr()?method?sometimes?took?property?values?into?account?when?retrieving?some?attributes,?which?could?cause?inconsistent?behavior.

jQuery 1.6 より前では、attr() を使用すると

動作

に一貫性がないことがあったためです。 それでは、いつ attr() を使用し、いつ prop() を使用するのでしょうか?

To?retrieve?and?change?DOM?properties?such?as?the?checked,?selected,?or?disabled?state?of?form?elements,?use?the?.prop()?method.

公式の推奨事項(xiàng)に従って:

2つの

プロパティを持つ屬性(チェック、選択、または無効など)はprop()を使用し、その他はattr()を使用しますこの時(shí)點(diǎn)で、attr('checked' )を変更します前述の問題を修正するには、prop('checked') を?qū)g行します。

待って、問題は実際には解決されていないようですが、冒頭の例で attr() を使用する jQuery 1.8.3 と 1.9.0 に違いがあるのはなぜでしょうか。

それらの違いを知りたい場合は、ソースコードを確認(rèn)するのが最善の方法です:

1.8.3 attr():

attr:?function(?elem,?name,?value,?pass?)?{????var?ret,?hooks,?notxml,
????????nType?=?elem.nodeType;????//?don't?get/set?attributes?on?text,?comment?and?attribute?nodes
????if?(?!elem?||?nType?===?3?||?nType?===?8?||?nType?===?2?)?{????????return;
????}????if?(?pass?&&?jQuery.isFunction(?jQuery.fn[?name?]?)?)?{????????return?jQuery(?elem?)[?name?](?value?);
????}????//?Fallback?to?prop?when?attributes?are?not?supported
????if?(?typeof?elem.getAttribute?===?"undefined"?)?{????????return?jQuery.prop(?elem,?name,?value?);
????}

????notxml?=?nType?!==?1?||?!jQuery.isXMLDoc(?elem?);????//?All?attributes?are?lowercase
????//?Grab?necessary?hook?if?one?is?defined
????if?(?notxml?)?{
????????name?=?name.toLowerCase();
????????hooks?=?jQuery.attrHooks[?name?]?||?(?rboolean.test(?name?)???boolHook?:?nodeHook?);
????}????if?(?value?!==?undefined?)?{????????if?(?value?===?null?)?{
????????????jQuery.removeAttr(?elem,?name?);????????????return;

????????}?else?if?(?hooks?&&?"set"?in?hooks?&&?notxml?&&?(ret?=?hooks.set(?elem,?value,?name?))?!==?undefined?)?{????????????return?ret;

????????}?else?{
????????????elem.setAttribute(?name,?value?+?""?);????????????return?value;
????????}

????}?else?if?(?hooks?&&?"get"?in?hooks?&&?notxml?&&?(ret?=?hooks.get(?elem,?name?))?!==?null?)?{????????return?ret;

????}?else?{

????????ret?=?elem.getAttribute(?name?);????????//?Non-existent?attributes?return?null,?we?normalize?to?undefined
????????return?ret?===?null??
????????????undefined?:
????????????ret;
????}
}

1.9.0 attr():

?attr:?function(?elem,?name,?value,?pass?)?{???
??var?ret,?hooks,?notxml,
????????nType?=?elem.nodeType;????
??//?don't?get/set?attributes?on?text,?comment?and?attribute?nodes
????if?(?!elem?||?nType?===?3?||?nType?===?8?||?nType?===?2?)?{????????
???????????return;
????}????
???if?(?pass?&&?jQuery.isFunction(?jQuery.fn[?name?]?)?)?{????????
????????return?jQuery(?elem?)[?name?](?value?);
????}????
????????//?Fallback?to?prop?when?attributes?are?not?supported
????if?(?typeof?elem.getAttribute?===?"undefined"?)?{???????
?????????return?jQuery.prop(?elem,?name,?value?);
????}

????notxml?=?nType?!==?1?||?!jQuery.isXMLDoc(?elem?);????
???//?All?attributes?are?lowercase
????//?Grab?necessary?hook?if?one?is?defined
????if?(?notxml?)?{
????????name?=?name.toLowerCase();
????????hooks?=?jQuery.attrHooks[?name?]?||?(?rboolean.test(?name?)???boolHook?:?nodeHook?);
????}????
???if?(?value?!==?undefined?)?{????????
???????if?(?value?===?null?)?{
????????????jQuery.removeAttr(?elem,?name?);????????????
????????????return;

????????}?else?if?(?hooks?&&?"set"?in?hooks?&&?notxml?&&?(ret?=?hooks.set(?elem,?value,?name?))?!==?undefined?)?{????????????
????????????return?ret;

????????}?else?{
????????????elem.setAttribute(?name,?value?+?""?);???????????
?????????????return?value;
????????}

????}?else?if?(?hooks?&&?"get"?in?hooks?&&?notxml?&&?(ret?=?hooks.get(?elem,?name?))?!==?null?)?{??????
???????????????return?ret;

????}?else?{

????????ret?=?elem.getAttribute(?name?);????????
??????//?Non-existent?attributes?return?null,?we?normalize?to?undefined
????????return?ret?===?null??
????????????undefined?:
????????????ret;
????}
}

prop of 1.8.3 1.9.0 () も同じです:

prop:?function(?elem,?name,?value?)?{????
??var?ret,?hooks,?notxml,
???nType?=?elem.nodeType;????
???//?don't?get/set?properties?on?text,?comment?and?attribute?nodes
????if?(?!elem?||?nType?===?3?||?nType?===?8?||?nType?===?2?)?{????????
????return;
????}

????notxml?=?nType?!==?1?||?!jQuery.isXMLDoc(?elem?);????
????if?(?notxml?)?{????????
????//?Fix?name?and?attach?hooks
????????name?=?jQuery.propFix[?name?]?||?name;
????????hooks?=?jQuery.propHooks[?name?];
????}???
?????if?(?value?!==?undefined?)?{????????
?????????if?(?hooks?&&?"set"?in?hooks?&&?(ret?=?hooks.set(?elem,?value,?name?))?!==?undefined?)?{???????????
??????????return?ret;

????????}?else?{????????????
????????return?(?elem[?name?]?=?value?);
????????}

????}?else?{????????
???????if?(?hooks?&&?"get"?in?hooks?&&?(ret?=?hooks.get(?elem,?name?))?!==?null?)?{????????????
???????return?ret;

????????}?else?{????????????
????????return?elem[?name?];
????????}
????}
}

首先,我們看下?attr() 和 prop() 的區(qū)別

attr() 里面,最關(guān)鍵的兩行代碼

elem.setAttribute(?name,?value?+?""?);?
ret?=??elem.getAttribute(?name?);

很明顯的看出來,使用的 DOM 的 API setAttribute() 和 getAttribute() 方法操作的屬性元素節(jié)點(diǎn)。

prop() 里面,最關(guān)鍵的兩行代碼

return?(?elem[?name?]?=?value?);return?elem[?name?];

可以理解為 document.getElementById(el)[name] = value,這是轉(zhuǎn)化成 element 的一個(gè)屬性。

對比調(diào)試?1.9.0 和 1.8.3 的 attr() 方法,發(fā)現(xiàn)兩者的區(qū)別在于

hooks.get(?elem,?name?))

返回的值不一樣,具體的實(shí)現(xiàn):

1.8.3 中

boolHook?=?{
????get:?function(?elem,?name?)?{????????
????//?Align?boolean?attributes?with?corresponding?properties
????????//?Fall?back?to?attribute?presence?where?some?booleans?are?not?supported
????????var?attrNode,
????????????property?=?jQuery.prop(?elem,?name?);????????
????????????return?property?===?true?||?typeof?property?!==?"boolean"?&&?(?attrNode?=?elem.getAttributeNode(name)?)?&&?attrNode.nodeValue?!==?false??
????????????name.toLowerCase()?:???????????
?????????????undefined;
????}
}

1.9.0 中

boolHook?=?{????get:?function(?elem,?name?)?{???????
?var
????????????//?Use?.prop?to?determine?if?this?attribute?is?understood?as?boolean
????????????prop?=?jQuery.prop(?elem,?name?),??????????
??????????????//?Fetch?it?accordingly
????????????attr?=?typeof?prop?===?"boolean"?&&?elem.getAttribute(?name?),
????????????detail?=?typeof?prop?===?"boolean"??

????????????????getSetInput?&&?getSetAttribute??
????????????????????attr?!=?null?:???????????????????
?????????????????????//?oldIE?fabricates?an?empty?string?for?missing?boolean?attributes
????????????????????//?and?conflates?checked/selected?into?attroperties
????????????????????ruseDefault.test(?name?)??
????????????????????????elem[?jQuery.camelCase(?"default-"?+?name?)?]?:
????????????????????????!!attr?:???????????????
?????????????????????????//?fetch?an?attribute?node?for?properties?not?recognized?as?boolean
????????????????elem.getAttributeNode(?name?);???????
?????????????????return?detail?&&?detail.value?!==?false??
????????????name.toLowerCase()?:
????????????undefined;
????}
}

由此可見,1.9.0 開始不建議使用 attr() 來對具有 true 和 false 兩個(gè)屬性的屬性進(jìn)行操作了。

那么我們的結(jié)論是:

具有 true 和 false 兩個(gè)屬性的屬性,如 checked, selected 或者 disabled 使用prop(),其他的使用 attr(),具體見下表:

以上がjquery で attr() をいつ使用するか、prop() を使用するか?の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

foob??ar2000のダウンロード方法は? -foobar2000の使い方 foob??ar2000のダウンロード方法は? -foobar2000の使い方 Mar 18, 2024 am 10:58 AM

foob??ar2000 は、音楽リソースをいつでも聴くことができるソフトウェアです。あらゆる種類の音楽をロスレス音質(zhì)で提供します。音楽プレーヤーの強(qiáng)化版により、より包括的で快適な音楽體験を得ることができます。その設(shè)計(jì)コンセプトは、高度なオーディオをコンピュータ上で再生可能 デバイスを攜帯電話に移植し、より便利で効率的な音楽再生體験を提供 シンプルでわかりやすく、使いやすいインターフェースデザイン 過度な裝飾や煩雑な操作を排除したミニマルなデザインスタイルを採用また、さまざまなスキンとテーマをサポートし、自分の好みに合わせて設(shè)定をカスタマイズし、複數(shù)のオーディオ形式の再生をサポートする専用の音楽プレーヤーを作成します。過度の音量による聴覚障害を避けるために、自分の聴覚の狀態(tài)に合わせて調(diào)整してください。次は私がお手伝いさせてください

CrystalDiskmarkとはどのようなソフトウェアですか? -crystaldiskmarkの使い方は? CrystalDiskmarkとはどのようなソフトウェアですか? -crystaldiskmarkの使い方は? Mar 18, 2024 pm 02:58 PM

CrystalDiskMark は、シーケンシャルおよびランダムの読み取り/書き込み速度を迅速に測定する、ハード ドライブ用の小型 HDD ベンチマーク ツールです。次に、編集者が CrystalDiskMark と Crystaldiskmark の使用方法を紹介します。 1. CrystalDiskMark の概要 CrystalDiskMark は、機(jī)械式ハード ドライブとソリッド ステート ドライブ (SSD) の読み取りおよび書き込み速度とパフォーマンスを評価するために広く使用されているディスク パフォーマンス テスト ツールです。 ). ランダム I/O パフォーマンス。これは無料の Windows アプリケーションで、使いやすいインターフェイスとハード ドライブのパフォーマンスのさまざまな側(cè)面を評価するためのさまざまなテスト モードを提供し、ハードウェアのレビューで広く使用されています。

Baidu Netdisk アプリの使用方法 Baidu Netdisk アプリの使用方法 Mar 27, 2024 pm 06:46 PM

クラウド ストレージは今日、私たちの日常生活や仕事に欠かせない部分になっています。中國有數(shù)のクラウド ストレージ サービスの 1 つである Baidu Netdisk は、強(qiáng)力なストレージ機(jī)能、効率的な伝送速度、便利な操作體験により多くのユーザーの支持を得ています。また、重要なファイルのバックアップ、情報(bào)の共有、オンラインでのビデオの視聴、または音楽の聴きたい場合でも、Baidu Cloud Disk はニーズを満たすことができます。しかし、Baidu Netdisk アプリの具體的な使用方法を理解していないユーザーも多いため、このチュートリアルでは Baidu Netdisk アプリの使用方法を詳しく紹介します。まだ混亂しているユーザーは、この記事に従って詳細(xì)を?qū)Wぶことができます。 Baidu Cloud Network Disk の使用方法: 1. インストール まず、Baidu Cloud ソフトウェアをダウンロードしてインストールするときに、カスタム インストール オプションを選択してください。

BTCC チュートリアル: BTCC 取引所で MetaMask ウォレットをバインドして使用する方法は? BTCC チュートリアル: BTCC 取引所で MetaMask ウォレットをバインドして使用する方法は? Apr 26, 2024 am 09:40 AM

MetaMask (中國語ではリトル フォックス ウォレットとも呼ばれます) は、無料で評判の高い暗號化ウォレット ソフトウェアです?,F(xiàn)在、BTCC は MetaMask ウォレットへのバインドをサポートしており、バインド後は MetaMask ウォレットを使用してすぐにログイン、値の保存、コインの購入などが可能になり、初回バインドで 20 USDT のトライアル ボーナスも獲得できます。 BTCCMetaMask ウォレットのチュートリアルでは、MetaMask の登録方法と使用方法、および BTCC で Little Fox ウォレットをバインドして使用する方法を詳しく紹介します。メタマスクウォレットとは何ですか? 3,000 萬人を超えるユーザーを抱える MetaMask Little Fox ウォレットは、現(xiàn)在最も人気のある暗號通貨ウォレットの 1 つです。無料で使用でき、拡張機(jī)能としてネットワーク上にインストールできます。

NetEase メールボックス マスターの使用方法 NetEase メールボックス マスターの使用方法 Mar 27, 2024 pm 05:32 PM

NetEase Mailbox は、中國のネットユーザーに広く使用されている電子メール アドレスとして、その安定した効率的なサービスで常にユーザーの信頼を獲得してきました。 NetEase Mailbox Master は、攜帯電話ユーザー向けに特別に作成された電子メール ソフトウェアで、電子メールの送受信プロセスが大幅に簡素化され、電子メールの処理がより便利になります。 NetEase Mailbox Master の使い方と具體的な機(jī)能について、以下ではこのサイトの編集者が詳しく紹介しますので、お役に立てれば幸いです。まず、モバイル アプリ ストアで NetEase Mailbox Master アプリを検索してダウンロードします。 App Store または Baidu Mobile Assistant で「Ne??tEase Mailbox Master」を検索し、畫面の指示に従ってインストールします。ダウンロードとインストールが完了したら、NetEase の電子メール アカウントを開いてログインします。ログイン インターフェイスは次のとおりです。

Xiaomi Autoアプリの使い方 Xiaomi Autoアプリの使い方 Apr 01, 2024 pm 09:19 PM

Xiaomi 車用ソフトウェアは、車のリモート制御機(jī)能を提供し、ユーザーが攜帯電話やコンピュータを介して車両のドアや窓の開閉、エンジンの始動、車両のエアコンやオーディオの制御など、車両を遠(yuǎn)隔制御できるようにします。このソフトウェアの使い方や內(nèi)容について、一緒に學(xué)びましょう。 Xiaomi Auto アプリの機(jī)能と使用方法の包括的なリスト 1. Xiaomi Auto アプリは 3 月 25 日に Apple AppStore で公開され、Android スマートフォンのアプリストアからダウンロードできるようになりました; 車の購入: 主要なハイライトと技術(shù)パラメータについて學(xué)びますXiaomi Auto のサービスを利用して、試乗の予約をし、Xiaomi 車の設(shè)定と注文を行い、車の受け取りの To-Do 項(xiàng)目のオンライン処理をサポートします。 3. コミュニティ: Xiaomi Auto ブランド情報(bào)を理解し、車の経験を交換し、素晴らしいカーライフを共有します; 4. 車の制御: 攜帯電話はリモコン、遠(yuǎn)隔制御、リアルタイム セキュリティ、簡単です。

iOS 17.4の新しい高度な機(jī)能「盜難デバイス保護(hù)」の使い方を教えます iOS 17.4の新しい高度な機(jī)能「盜難デバイス保護(hù)」の使い方を教えます Mar 10, 2024 pm 04:34 PM

Appleは火曜日にiOS 17.4アップデートを公開し、iPhoneに多數(shù)の新機(jī)能と修正をもたらした。このアップデートには新しい絵文字が含まれており、EU ユーザーは他のアプリ ストアから絵文字をダウンロードすることもできます。さらに、このアップデートでは iPhone のセキュリティ制御も強(qiáng)化され、より多くの「盜難デバイス保護(hù)」設(shè)定オプションが導(dǎo)入され、ユーザーにより多くの選択肢と保護(hù)が提供されます。 「iOS17.3では、「盜難デバイス保護(hù)」機(jī)能が初めて導(dǎo)入され、ユーザーの機(jī)密情報(bào)のセキュリティが強(qiáng)化されています。ユーザーが自宅やその他の身近な場所から離れている場合、この機(jī)能ではユーザーは最初に生體認(rèn)証情報(bào)を入力する必要がありますApple ID パスワードの変更や盜難デバイス保護(hù)の無効化など、特定のデータにアクセスして変更するには、情報(bào)を再度入力する必要があります。

リトル ブラック ボックス CDKey の使用方法 リトル ブラック ボックス CDKey の使用方法 Mar 12, 2024 pm 07:34 PM

Little Black Box cdkey の使用方法 簡単に言うと、Steam プラットフォーム上のゲームを Little Black Box から直接購入でき、購入が成功すると CDK 引き換えコードを受け取ります。次に、Steam モールでこの引き換えコードを使用して、対応するゲームを購入します。小さな黒いボックスの CD キーの使い方を知らない友人も多いと思いますが、以下に引き換え手順を詳しく説明しますので、お役に立てれば幸いです。 Little Black Box cdkey の使用方法 1. まず、Little Black Box ゲームの購入後に取得した CDK 引き換えコードをコピーします。 2. 次に、Steam プラットフォームを起動します。 3. 左上隅のメニューで「ゲーム」オプションをクリックします。 4. 新しいメニューで「Steam で製品をアクティベートする」を見つけてクリックします。 5. ポップアップ インターフェイスで直接 [次へ] をクリックします。 6. 小さなブラックボックスを購入する

See all articles