目次
プロパティを「クリックして」に設定します。 NodeList.jsは、NodeListの各ノードに対してこれを実行します。とても賢いですよね?
nodeList.jsアレイメソッドのサポート
pushおよびunshift
メソッド:
callメソッドでは、要素固有のメソッドを呼び出すことができます(たとえば、ビデオ要素で
itemメソッドは、jQueryの
owner属性は、jqueryの
ノデリストとHTMLCollectionの違いは何ですか?
jQueryセレクターは、通常の要素ではなくprevobjectを返すのはなぜですか?
ノデリストをループする方法は?
jQueryでの.prev()メソッドの使用は何ですか?
jQueryは2022年にまだ関連していますか?
ノデリストから特定のノードを選択する方法は?

jQueryの膨満感を失います

Feb 19, 2025 am 08:27 AM

Lose the jQuery Bloat ­

コアポイント

  • nodeList.jsは、jQueryのDOM操作の代替として、同様の機能を提供しますが、(圧縮後4K)、ネイティブブラウザーAPIの改善を利用します。

  • jQueryとは異なり、nodelist.jsはノードアレイを単一ノードとして扱い、クリーナーコードを有効にし、ノーデリストオブジェクト操作を容易にします。

  • nodeList.jsには、属性を設定および取得し、要素固有の方法を呼び出し、ノデリストのノードへのアクセスを含む特別な方法が含まれています。 prevObject owner

  • nodeList.jsは、特定のバージョン(Firefox 6、Safari 5.0.5、Chrome 6、IE 9、Opera 11.6)の後に主流のブラウザと互換性があり、ブラウザーによって追加された新しいメソッド/プロパティが含まれるように自動的に更新されます。
  • p.tip { バックグラウンドカラー:RGBA(128,128,128,0.05); Border-Top-Right-Radius:5px; 国境圏 - 右とradius:5px; パディング:15px 20px; 国境左:10pxソリッドRGBA(128,128,128,075); }

  • 近年、jQueryはWeb上の事実上のJavaScriptライブラリになりました。多くのクロスブラウザーの矛盾を削除し、クライアントスクリプトに人気のある構文砂糖の層を追加します。抽象化処理の主な問題の1つはDOM操作ですが、jQueryの出現以来、ネイティブブラウザーAPIが大幅に改善されており、「おそらくJqueryを必要としない」という概念が人気がありました。

理由は次のとおりです

jQueryには、必要または使用していない多くの機能が含まれています(したがって、巨大であることは不要です)。

    jQueryは、あまりにも多くの人々のためにあまりにも多くの機能を担当します。一般に、小さなライブラリはいくつかのタスクをより良く実行できます。
  1. dom操作の観点から、ブラウザAPIはjQueryのほとんどの関数を実行できるようになりました。
  2. ブラウザAPIは、たとえば
  3. の代わりに
  4. を使用するなど、より同期しています。
  5. addEventListener attachEvent問題は何ですか?
問題は、domにネイティブ(または純粋な)javaScriptを使用することは、jqueryと比較して面倒である可能性があることです。これは、より冗長なコードを作成し、ブラウザの役に立たないノデリストを処理する必要があるためです。

まず、MDNのノデリストの定義を見てみましょう:

NodeListオブジェクトは、ノードのコレクションであり、

メソッドおよび

メソッドによって返されるものです。

Node.childNodesダイナミクスノデリストが時々あります(混乱する可能性があります):document.querySelectorAll

場合によっては、NodeListは動的なコレクションです。つまり、DOMの変更がコレクションに反映されています。たとえば、

は動的です。

これは、動的で静的なものがわからないため、問題になる可能性があります。 NodeListから各ノードを削除し、ノデリストが空であるかどうかを確認しない限り。空の場合、動的なノデリストがあります(それはただの悪い考えです)。 Node.childNodesさらに、ブラウザは、これらのノデリストオブジェクトを操作するための有用な方法を提供しません。

たとえば、残念ながら、

を使用してノードをループすることはできません。

したがって、forEach次のことを行う必要があります

var nodes = document.querySelectorAll('div');
nodes.forEach(function(node) {
  // do something
});
// 错误:nodes.forEach 不是函数
または「ハック」のみを使用することさえあります:

var nodes = document.querySelectorAll('div');
for(var i = 0, l = nodes.length; i < l; i++) {
  // do something with nodes[i]
}
ブラウザのネイティブノデリストには、1つの方法しかありません。 Indexを介してNodeListからノードを返します。アレイを使用するようにノードにアクセスできる場合(

を使用)、それは完全に役に立たない:

[].forEach.call(document.querySelectorAll('div'), function(node) {
    // do something
});

これは、nodelist.jsが登場する場所です。JQUERYを使用してブラウザネイティブAPIを使用してDOMを簡単に操作できますが、4K圧縮サイズのみが必要です。 item array[index]

solution
var nodes = document.querySelectorAll('div');
nodes.item(0) === nodes[0]; // true

Nodelist.jsを作成しました。なぜなら、ネイティブDom APIを使用しているが、それらをより簡潔にしたいので、コードを作成するときに多くの冗長性を減らします(ループなど)。

nodeList.jsは、単一のノードであるかのようにノードの配列(つまり、ノデリスト)を操作できるネイティブDom APIのラッパーです。これにより、ブラウザのネイティブNodeListオブジェクトよりも多くの機能が得られます。

これが良いと思われる場合は、公式のGithubリポジトリからnodelist.jsのコピーを入手し、このチュートリアルの残りの部分を読み続けてください。

使用法:

domノードの選択は簡単です:

//ノデリストに戻ります

この方法は、バックグラウンドで使用されています

$$(selector);

しかし、jqueryと比較してどうですか?

この質問をしてくれてうれしいです。ネイティブJS、jQuery、およびnodelist.jsを比較しましょう。 querySelectorAll(selector)

3つのボタンがあるとします:

各ボタンのテキストを「私をクリックする」に変更しましょう。

ネイティブjs:

jquery:

var buttons = document.querySelectorAll('button'); // 返回浏览器无用的 NodeList
for(var i = 0, l = buttons.length; i < l; i++) {
  buttons[i].textContent = 'Click Me';
}

nodelist.js:

$('button').text('Click Me');

ここでは、nodeList.jsがノデリストを単一のノードとして効果的に扱うことができることがわかります。つまり、ノデリストを参照して、

プロパティを「クリックして」に設定します。 NodeList.jsは、NodeListの各ノードに対してこれを実行します。とても賢いですよね?

メソッドチェーン(jQueryと同様)が必要な場合は、次のことを行います。これは、ノデリストへの参照を返します。
$$('button').textContent = 'Click Me';

さあ、各ボタンにクリックイベントリスナーを追加しましょう:textContent

ネイティブjs:

$$('button').set('textContent', 'Click Me');

jquery:

nodelist.js:
var buttons = document.querySelectorAll('button'); // 返回浏览器无用的 NodeList
for(var i = 0, l = buttons.length; i < l; i++) {
  buttons[i].addEventListener('click', function() {
    this.classList.add('clicked');
  });
}

さて、jqueryの
$('button').on('click', function() {
  $(this).addClass('click');
  // 或将 jQuery 与原生混合使用 `classList`:
  this.classList.add('clicked');
});
方法はかなり良いです。私のライブラリはブラウザのネイティブDOM API(したがって

)を使用していますが、それは私たちがこの方法のエイリアスを作成することを妨げません:

$$('button').addEventListener('click', function() {
  this.classList.add('clicked');
});

悪くない!これは、独自の方法を追加する方法を示しています

var nodes = document.querySelectorAll('div');
nodes.forEach(function(node) {
  // do something
});
// 错误:nodes.forEach 不是函数

nodeList.jsアレイメソッドのサポート

nodeList.jsはArray.prototypeから継承しますが、直接ではありません。いくつかの方法が変更されているため、ノデリスト(ノードの配列)でそれらを使用することは理にかなっています。

pushおよびunshift

たとえば、

およびpushメソッドはパラメーターとしてノードのみをとることができます。そうしないと、エラーがスローされます。 unshift

したがって、ノデリストを返してメソッドチェーンを許可します。つまり、JavaScriptのネイティブ
var nodes = document.querySelectorAll('div');
for(var i = 0, l = nodes.length; i < l; i++) {
  // do something with nodes[i]
}
またはメソッドとは異なります。 NodeListの長さが必要な場合は、プロパティを使用する必要があります。

これら2つのメソッドは、JavaScriptのネイティブ配列メソッドのように、ノデリストを変更します。 push unshift Array#pushArray#unshift length

メソッドは、パラメーターとして以下を受け入れます。

は再帰的な方法なので、これらの配列は私たちが望むほど深く、平らになる可能性があります。ただし、通過した配列の要素がノード、ノデリスト、またはhtmlCollectionでない場合、エラーが発生します。 concat

javascriptのconcatメソッドと同様に、新しいノデリストを返します。

[].forEach.call(document.querySelectorAll('div'), function(node) {
    // do something
});

concat

concatArray#concat

popおよびshiftメソッドの両方がオプションのパラメーターを使用して、ノードリストからポップまたはシフトするノードの数を示します。 JavaScriptのネイティブmapまたはsliceとは異なり、後者は常にパラメーターとして渡されるものに関係なく、常に配列内の要素をポップアップ表示またはシフトします。 filter

マッピングされた各値がノードである場合、

メソッドはノーデリストを返します。

popshiftおよびArray#popメソッドは、実際の配列で行うのと同じことを行いますが、ノデリストを返します。 Array#shift

nodeList.jsは

から直接継承しないため、nodeList.jsをロードするときにmapにメソッドを追加すると、継承されません。

ここで、Nodelist.jsの残りの配列メソッドを表示できます。 slice filter特別な方法

nodeList.jsには、4つの一意の方法と、Array.prototypeと呼ばれるプロパティがあります。 Array.prototype

および

メソッド:

ownerいくつかの要素には、そのタイプの要素に固有の属性があります(たとえば、アンカータグのprevObject属性)。これが、

が定義されていない理由です。これは、ノデリストのすべての要素に継承されたプロパティではないためです。これは、これらのプロパティにアクセスするために

メソッドを使用する方法です。

var nodes = document.querySelectorAll('div');
nodes.forEach(function(node) {
  // do something
});
// 错误:nodes.forEach 不是函数

setメソッドを使用して、各要素のこれらのプロパティを設定できます。

また、
var nodes = document.querySelectorAll('div');
for(var i = 0, l = nodes.length; i < l; i++) {
  // do something with nodes[i]
}

ノデリストを返して、メソッドチェーンを許可します。 setなどで使用できます(両方とも同等):textContent

[].forEach.call(document.querySelectorAll('div'), function(node) {
    // do something
});
1回の呼び出しに複数のプロパティを設定することもできます。

上記のすべての操作は、任意の属性を使用して実行できます。
var nodes = document.querySelectorAll('div');
nodes.item(0) === nodes[0]; // true

style

メソッド
var buttons = document.querySelectorAll('button'); // 返回浏览器无用的 NodeList
for(var i = 0, l = buttons.length; i < l; i++) {
  buttons[i].textContent = 'Click Me';
}

callメソッドでは、要素固有のメソッドを呼び出すことができます(たとえば、ビデオ要素で

):

call pause

メソッド
$('button').text('Click Me');

itemメソッドは、jQueryの

メソッドに相当します。インデックスを通過するノードのみを含むノデリストを返します:

item eq

属性
$$('button').textContent = 'Click Me';

owner属性は、jqueryの

に相当します。

ownerprevObjectスタイルアレイを返し、

はマッピングされたノデリストを返します。
$$('button').set('textContent', 'Click Me');

nodeList.js互換性btns.style owner私のライブラリは、以下に説明するように、すべての主要な新しいブラウザと互換性があります。 style

browser

バージョンfirefox6 safari 5.0.5 chrome6 < 🎜<🎜<🎜<🎜<🎜<🎜ie 9 opera 11.6 < 結論 これで、最終的に便利なノデリストオブジェクトを使用できます! 約4Kの圧縮サイズの場合、上記のすべてを取得します。これについては、nodeList.jsのgithubリポジトリで学ぶことができます。 nodelist.jsは依存関係としてブラウザを使用するため、アップグレードは必要ありません。ブラウザが新しいメソッド/属性をDOM要素に追加するたびに、これらのメソッド/属性をnodeList.jsを介して自動的に使用できます。これはすべて、心配する必要がある唯一の非推測はブラウザ削除方法だけであることを意味します。これらは通常、Webを壊すことができないため、非常に低い使用方法です。 それで、あなたはどう思いますか?このライブラリを使用することを検討しますか?重要な機能はありませんか?以下のコメントであなたのコメントを聞いてみたいです。 nodeList.js

を使用したDOM操作に関するよくある質問

ノデリストとHTMLCollectionの違いは何ですか?

ノデリストとhtmlCollectionはどちらもノードコレクションです。それらの主な違いは、ノデリストが任意のノードタイプを含めることができることですが、HTMLCollectionは要素ノードのコレクションです。 HTMLCollectionも動的です。つまり、ドキュメント構造が変更されると自動的に更新されます。一方、NodeListは静的であり、ドキュメントの変更を反映するために更新しません。

ノデリストを配列に変換する方法は?

メソッドまたは拡張演算子を使用して、ノデリストをアレイに変換できます。それを行う方法は次のとおりです
var nodes = document.querySelectorAll('div');
nodes.forEach(function(node) {
  // do something
});
// 错误:nodes.forEach 不是函数

jQueryセレクターは、通常の要素ではなくprevobjectを返すのはなぜですか?

JQueryのチェーンメカ​​ニズムは、変更を加える前に以前のオブジェクトを保存することにより機能します。これにより、.end()メソッドを使用して以前の状態に復元できます。実際のDOM要素を取得したい場合は、.get()メソッドまたは配列表記を使用できます。

ノデリストをループする方法は?

for loop、for ... of loop、またはforEach()メソッドを使用して、ノデリストをループすることができます。以下は、forループを使用した例です:

var nodes = document.querySelectorAll('div');
for(var i = 0, l = nodes.length; i < l; i++) {
  // do something with nodes[i]
}

jQueryでの.prev()メソッドの使用は何ですか?

jQueryの.prev()メソッドは、前の兄弟のすぐ隣の選択した要素を選択するために使用されます。セレクターが提供されている場合、以前の兄弟要素は、セレクターが一致している場合にのみ取得されます。

jQueryは2022年にまだ関連していますか?

jQueryは発売時のゲームチェンジャーでしたが、最新のJavaScriptエコシステムは大幅に変化しました。 JQueryを人気にする機能の多くは、JavaScript自体に組み込まれています。ただし、JQueryは依然として広く使用され、維持されており、一部のプロジェクトには適した選択かもしれません。

ノデリストから特定のノードを選択する方法は?

配列表記またはitem()メソッドを使用して、NodeListから特定のノードを選択できます。それを行う方法は次のとおりです

[].forEach.call(document.querySelectorAll('div'), function(node) {
    // do something
});
ノデリストのメソッドを使用、フィルター、および削減できますか?

ノデリストは配列ではないため、マップ、フィルター、削減などのメソッドはありません。ただし、ノデリストを配列に変換してから、これらのメソッドを使用できます。

QuerySelectorとQuerySelectorallの違いは何ですか?

指定されたCSSセレクターに一致するドキュメントの最初の要素を返し、querySelectorはCSSセレクターに一致するすべての要素のノデリストを返します。 querySelectorAll

ノデリストが空であるかどうかを確認するにはどうすればよいですか?

プロパティをチェックして、Nodelistが空であるかどうかを確認できます。長さが0の場合、ノデリストは空です。それを行う方法は次のとおりです length

以上がjQueryの膨満感を失いますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

node.jsでHTTPリクエストを作成する方法は? node.jsでHTTPリクエストを作成する方法は? Jul 13, 2025 am 02:18 AM

node.jsでHTTPリクエストを開始するには、組み込みモジュール、axios、およびnode-fetchを使用する3つの一般的な方法があります。 1.依存関係のない内蔵http/httpsモジュールを使用します。これは基本的なシナリオに適していますが、https.get()を使用してデータを取得したり、.write()を介してPOSTリクエストを送信するなど、データステッチとエラーモニタリングの手動処理が必要です。 2.Axiosは、約束に基づいたサードパーティライブラリです。簡潔な構文と強力な機能を備えており、非同期/待ち声、自動JSON変換、インターセプターなどをサポートします。非同期リクエスト操作を簡素化することをお勧めします。 3.Node-Fetchは、約束と単純な構文に基づいて、ブラウザフェッチに似たスタイルを提供します

JavaScriptデータ型:プリミティブ対参照 JavaScriptデータ型:プリミティブ対参照 Jul 13, 2025 am 02:43 AM

JavaScriptデータ型は、プリミティブタイプと参照タイプに分割されます。プリミティブタイプには、文字列、数字、ブール、ヌル、未定義、シンボルが含まれます。値は不変であり、コピーは値を割り当てるときにコピーされるため、互いに影響を与えません。オブジェクト、配列、関数などの参照タイプはメモリアドレスを保存し、同じオブジェクトを指す変数は互いに影響します。 TypeofとInstanceOFを使用してタイプを決定できますが、TypeOfNullの歴史的な問題に注意してください。これらの2種類の違いを理解することは、より安定した信頼性の高いコードを書くのに役立ちます。

JavaScript Timeオブジェクト、誰かがEACTEXE、Google Chromeなどのより高速なWebサイトを構築します。 JavaScript Timeオブジェクト、誰かがEACTEXE、Google Chromeなどのより高速なWebサイトを構築します。 Jul 08, 2025 pm 02:27 PM

こんにちは、JavaScript開発者!今週のJavaScriptニュースへようこそ!今週は、DenoとのOracleの商標紛争、新しいJavaScript Timeオブジェクトがブラウザ、Google Chromeアップデート、およびいくつかの強力な開発ツールによってサポートされています。始めましょう! 「JavaScript」の商標を登録しようとするDeno Oracleの試みとのOracleの商標紛争は、論争を引き起こしました。 Node.jsとDenoの作成者であるRyan Dahlは、商標をキャンセルするために請願書を提出しました。

ハンドリングの約束:javascriptのチェーン、エラー処理、および約束の組み合わせ ハンドリングの約束:javascriptのチェーン、エラー処理、および約束の組み合わせ Jul 08, 2025 am 02:40 AM

約束は、JavaScriptで非同期操作を処理するためのコアメカニズムです。チェーンコール、エラー処理、コンビナーの理解は、アプリケーションをマスターするための鍵です。 1.チェーンコールは、.then()を通じて新しい約束を返し、非同期プロセスの連結を実現します。それぞれ.then()は以前の結果を受け取り、値または約束を返すことができます。 2。エラー処理は、.catch()を使用して例外をキャッチしてサイレント障害を回避し、キャッチのデフォルト値を返すためにプロセスを継続する必要があります。 3。promise.all()などの組み合わせ(すべての成功後にのみ成功しました)、promise.race()(最初の完了が返されます)、promise.allsettled()(すべての完了を待っています)

キャッシュAPIとは何ですか?また、サービスワーカーでどのように使用されますか? キャッシュAPIとは何ですか?また、サービスワーカーでどのように使用されますか? Jul 08, 2025 am 02:43 AM

Cacheapiは、ブラウザからネットワークリクエストをキャッシュするツールです。これは、ウェブサイトのパフォーマンスとオフラインエクスペリエンスを改善するために、サービスワーカーと併用することがよくあります。 1.開発者は、スクリプト、スタイルシート、写真などのリソースを手動で保存できるようにします。 2。要求に応じてキャッシュ応答と一致させることができます。 3.特定のキャッシュの削除またはキャッシュ全体のクリアをサポートします。 4.フェッチイベントを聞いているサービスワーカーを介して、キャッシュの優先順位またはネットワークの優先戦略を実装できます。 5.オフラインサポート、繰り返しのアクセス速度の高速化、主要なリソースのプリロード、バックグラウンドアップデートコンテンツによく使用されます。 6.それを使用する場合、キャッシュバージョンの制御、ストレージ制限、およびHTTPキャッシングメカニズムとの違いに注意する必要があります。

JSラウンドアップ:JavaScriptイベントループに深く潜り込む JSラウンドアップ:JavaScriptイベントループに深く潜り込む Jul 08, 2025 am 02:24 AM

JavaScriptのイベントループは、コールスタック、WebAPIS、およびタスクキューを調整することにより、非同期操作を管理します。 1.コールスタックは同期コードを実行し、非同期タスクに遭遇すると、処理のためにWebAPIに引き渡されます。 2。WebAPIがバックグラウンドでタスクを完了した後、コールバックを対応するキュー(マクロタスクまたはマイクロタスク)に入れます。 3.イベントループは、コールスタックが空であるかどうかをチェックします。空の場合、コールバックはキューから取り出され、実行のためにコールスタックに押し込まれます。 4.マイクロタスク(Promise.thenなど)は、マクロタスク(SettimeOutなど)より優先されます。 5.イベントループを理解するには、メインスレッドのブロックを避け、コード実行順序を最適化するのに役立ちます。

JavaScript DOMイベントでのイベントの泡立ちとキャプチャの理解 JavaScript DOMイベントでのイベントの泡立ちとキャプチャの理解 Jul 08, 2025 am 02:36 AM

イベントの泡は、ターゲット要素から祖先ノードに外側に伝播し、イベントキャプチャは外側の層からターゲット要素に内側に伝播します。 1。イベントバブル:子要素をクリックした後、イベントは親要素のリスナーを上向きにトリガーします。たとえば、ボタンをクリックした後、最初に保育を出してから、親クリックしました。 2。イベントキャプチャ:3番目のパラメーターをtrueに設定して、リスナーが[親子要素のキャプチャリスナー]をクリックする前に[親要素のキャプチャリスナーをトリガーするなど、キャプチャステージで実行されるようにします。 3.実用的な用途には、子どもの要素イベントの統一された管理、傍受前処理、パフォーマンスの最適化が含まれます。 4. DOMイベントストリームは、キャプチャ、ターゲット、バブルの3つの段階に分割され、デフォルトのリスナーはバブルステージで実行されます。

マップとフィルターを超えて高次関数のJSラウンドアップ マップとフィルターを超えて高次関数のJSラウンドアップ Jul 10, 2025 am 11:41 AM

JavaScriptアレイには、Map and Filterに加えて、他の強力で使用されていない方法があります。 1.還元は、合計するだけでなく、カウント、グループ、フラットンアレイ、新しい構造を構築することもできます。 2。FindおよびFindIndexは、個々の要素またはインデックスを見つけるために使用されます。 3.一部とすべてが条件が存在するか、すべての出会いかを判断するために使用されます。 4.ソートはソートできますが、元の配列を変更します。 5.副作用を避けるために、それを使用するときにアレイをコピーすることに注意してください。これらの方法により、コードがより簡潔で効率的になります。

See all articles