Modern JavaScriptはjQueryに取って代わり、ネイティブAPIを介してDOMを効率的に動作させることができます。 1。document.queryselector()およびqueryselectorall()を使用して、複雑なセレクターをサポートする要素を選択します。 2。イベント代表者を使用して、親要素のイベントを聴き、e.target.matches()を使用してターゲットを判斷して動的なコンテンツのパフォーマンスを向上させます。 3. document.createelement()を介して要素を作成するか、insertadjacenthtml()でhtmlを挿入します。 4。SetAttribute()、クラスリスト、スタイル屬性を使用して、それぞれ屬性、クラス名、およびスタイルを操作します。 5. ParentNode、NextElementibling、QuerySelectorなどのjQueryに対応するネイティブDOMトラバーサル方法。 6。El.Remove()を呼び出して、古いブラウザと互換性のある要素を削除します。 parentNode.RemoveChild(); 7. TextContentを使用して、より安全で効率的なテキストコンテンツを取得または設(shè)定します。 innerhtmlはHTMLを挿入するために使用されます。 8。document.addeventlistener( 'domcontentloaded')を使用して、DOMがロードされるのを待ちます。 9. $および$$関數(shù)を記述してjQueryセレクターをシミュレートし、イベントプロキシを?qū)g裝するために$ .ONをカプセル化できます。 10。パフォーマンス最適化の提案には、イベントデリゲート、バッチDOM操作、およびドキュメントフラグメントを使用して再配置を減らすキャッシュセレクターが含まれます。その強力なAPIにより、Modern JavaScriptはJQueryに頼る必要がなくなり、そのコードは軽量で効率的で、メンテナンスが簡単です。
特にネイティブのJavaScript(ES6)と最新のDOM APIがブラウザ全體で強力で一貫性があるため、最新のWeb開発はJQueryから大部分を移動しました。 jQueryのない高度なDOM操作は可能であるだけでなく、しばしばより速く、きれいで、より維持されます。 Vanilla JavaScriptを使用して、一般的で高度なタスクを処理する方法は次のとおりです。

1. jQueryなどの要素の選択
jQueryは、柔軟な$()
構(gòu)文で要素の選択を簡単にしました?,F(xiàn)代のJavaScriptは、同様に表現(xiàn)力豊かな方法を提供します。
//単一要素($( 'selector')。get(0)または$( 'selector')[0]) const el = document.queryselector('。my-class '); //複數(shù)の要素(jqueryコレクションのようにノデリストを返す) const els = document.queryselectorall('。my-items '); //データ屬性、狀態(tài)などを一致させます。 const activeLinks = document.queryselectorall( 'a.active [data-toggle]');
?ヒント: Array.from()
を使用するか、構(gòu)文を広げて、 NodeList
map
、 filter
などの配列に変換します。

const texts = [... document.queryselectorall( 'li')]。マップ(li => li.textcontent);
2。jQueryのないイベント委任
各要素にイベントを添付する代わりに、特に動的コンテンツに特に役立つ親にイベント委任を使用します。
document.addeventlistener( 'click'、(e)=> { //クリックされた要素がセレクターと一致するかどうかを確認します if(e.target.matches( 'button.delete')){ console.log( 'アイテムの削除:'、e.target.dataset.id); } });
dove後で追加された要素でも機能します。
orphaned孤立したイベントリスナーからのメモリリークを回避します。

3。要素の作成と挿入
jQuery: $('<div class="box">Content</div>').appendTo('#container');
バニラJS:
const div = document.createelement( 'div'); div.classname = 'box'; div.TextContent = 'Content'; document.getElementById( 'container')。appendChild(div);
または、迅速なHTMLインジェクションにinsertAdjacentHTML()
を使用してください。
document.body.insertadjacenthtml( 'beforeend'、 '<div class = "alert"> new Message </div>');
?ポジション: 'beforebegin'
、 'afterbegin'
、 'beforeend'
、 'afterend'
4。屬性、クラス、およびスタイルの更新
屬性
el.setattribute( 'data-id'、123); el.getattribute( 'href'); el.RemoveAttribute( 'Disabled');
クラス( classList
付き)
el.classlist.add( 'Active'); el.classlist.remove( 'hidden'); el.classlist.toggle( 'visible'); el.classlist.contains( 'selected');
インラインスタイル
el.style.opacity = '0.5'; el.style.display = 'none'; //複數(shù)のスタイルについては、代わりにCSSクラスの使用を検討してください el.classlist.add( 'Fade-out');
5。DOMのトラバース
jQueryはトラバーサルを獨立させました。ネイティブ同等物:
jquery | バニラJS |
---|---|
$(el).parent() | el.parentNode |
$(el).children() | el.children (htmlcollection) |
$(el).next() | el.nextElementSibling |
$(el).prev() | el.previousElementSibling |
$(el).find('.child') | el.querySelector('.child') またはel.querySelectorAll() |
例:
const parent = el.parentnode; const firstchild = parent.firstelementChild; const lastChild = parent.lastelementChild;
6.要素を削除します
jQuery: $('#item').remove();
バニラJS:
el.Remove(); //最新のブラウザ
古いブラウザのサポートの場合:
if(el.parentnode){ el.parentnode.RemoveChild(el); }
7。HTMLおよびテキストコンテンツの操作
目的 | 方法 |
---|---|
內(nèi)側(cè)のHTMLを取得します | el.innerHTML |
內(nèi)側(cè)のHTMLを設(shè)定します | el.innerHTML = '<b>new</b>' |
テキストのみを取得します | el.textContent |
テキストのみを設(shè)定します | el.textContent = 'Plain text' |
innerHTML
よりも安全で速い可能性がある場合は、 textContent
を使用してください。
8。DOMの準備を待っている(jqueryの準備ができていない)
jQuery: $(document).ready(fn)
バニラJS:
document.addeventlistener( 'domcontentloaded'、()=> { console.log( 'dom is ready'); });
または、スクリプトを<body>
の最後に配置します - シンプルで効果的です。
9。カスタムユーティリティ機能(ミニjQuery代替物)
便利さを逃した場合は、軽量のラッパーを書いてください。
const $ =(selector、context = document)=> context.queryselector(selector); const $$ =(selector、context = document)=> [... context.queryselectorall(selector)]; // 使用法: const header = $( '。ヘッダー'); const links = $$( 'nav a'); //メソッドを追加します $ .on =(ターゲット、イベント、セレクター、ハンドラー)=> { Target.AddeventListener(event、(e)=> { if(e.target.matches(selector))handler.call(e.target、e); }); }; //それを使用: $ .on(document、 'click'、 '.btn'、(e)=> alert( 'clicked!'));
これにより、オーバーヘッドなしでjQueryのような構(gòu)文が得られます。
10。パフォーマンスのヒント
- 繰り返し使用するとセレクターをキャッシュします。
- 動的または大規(guī)模なリストにはイベント委任を使用します。
- 頻繁にdomの読み取り/書き込みを避けます - 可能な場合はバッチの変更。
- 多くの要素を挿入するためにドキュメントフラグメントを使用してください。
const fragment = document.createdocumentfragment(); for(let i = 0; i <100; i){ const li = document.createelement( 'li'); li.textcontent = `item $ {i}`; fragment.appendChild(li); } list.appendChild(fragment); // 1つのリフロー
基本的に、Modern JavaScriptは、追加のライブラリを使用して、JQueryが提供するすべてのものを提供します。 querySelector
、 classList
、 addEventListener
、およびinsertAdjacentHTML
使用すると、高度なDOM操作をきれいかつ効率的に行うことができます。
複雑ではありませんが、バニラJSがどこまで來たかを見落とすのは簡単です。
以上がjQueryなしの高度なDOM操作の詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

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

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

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

settings.jsonファイルは、ユーザーレベルまたはワークスペースレベルのパスにあり、VSCODE設(shè)定のカスタマイズに使用されます。 1。ユーザーレベルのパス:WindowsはC:\ users \\ appdata \ roaming \ code \ user \ settings.json、macos is/users //settings.json、linux is /home/.config/code/user/settings.json; 2。Workspace-Level Path:.vscode/settings Project Root Directoryの設(shè)定

JDBCトランザクションを正しく処理するには、最初に自動コミットモードをオフにし、次に複數(shù)の操作を?qū)g行し、結(jié)果に応じて最終的にコミットまたはロールバックする必要があります。 1。CONN.SETAUTOCOMMIT(FALSE)を呼び出して、トランザクションを開始します。 2。挿入や更新など、複數(shù)のSQL操作を?qū)g行します。 3。すべての操作が成功した場合はconn.commit()を呼び出し、データの一貫性を確保するために例外が発生した場合はconn.rollback()を呼び出します。同時に、リソースを使用してリソースを管理し、例外を適切に処理し、接続を密接に接続するために、接続の漏れを避けるために使用する必要があります。さらに、接続プールを使用してセーブポイントを設(shè)定して部分的なロールバックを達成し、パフォーマンスを改善するためにトランザクションを可能な限り短く保つことをお勧めします。

依存関係の指示(di)isadesignpatternwhere objectsreceivedenciesiesedternally、setter、orfieldinoffiction.2.springframeworkusessaNnotationslike@component、@service、@autowiredwithjava Basedconfi

itertools.combinationsは、反復(fù)可能なオブジェクトから指定された數(shù)の要素を選択するすべての非反復(fù)的な組み合わせ(無関係な順序)を生成するために使用されます。その使用には、次のものが含まれます。1。繰り返しの順序を避けるために、( 'a'、 'b')、 'a'、 'c')など、リストから2つの要素の組み合わせを選択します。 2?!窤BC」や「ABD」などの文字列の3文字の組み合わせを取り、サブシーケンス生成に適しています。 3。2つの數(shù)値の合計が1 5 = 6などのターゲット値に等しい組み合わせを見つけ、ダブルループロジックを簡素化します。組み合わせと配置の違いは、順序が重要かどうかにあります。組み合わせはABとBAを同じと見なし、順列は異なると見なされます。

Pythonは、ETLプロセスを?qū)g裝するための効率的なツールです。 1。データ抽出:データベース、API、ファイル、およびその他のソースからデータを抽出できます。Pandas、Sqlalchemy、Requests、その他のライブラリを介して。 2。データ変換:パンダを使用して、クリーニング、タイプ変換、関連性、集約、その他の操作を使用して、データの品質(zhì)を確保し、パフォーマンスを最適化します。 3。データの読み込み:PandasのTO_SQLメソッドまたはクラウドプラットフォームSDKを使用して、ターゲットシステムにデータを書き込み、書き込み方法とバッチ処理に注意してください。 4。ツールの推奨事項:気流、ダグスター、長官は、ログアラームと仮想環(huán)境を組み合わせて、安定性と保守性を向上させるために、プロセスのスケジューリングと管理に使用されます。

thejvmenablesjavaの「writeonce、runany where "capabilitybyexcuting byteCodeThethermainComponents:1。theClassLoaderSubSystemloads、links、andinitializes.classfilesusingbootStrap、拡張、およびアプリケーションクラスローロー、

Java.Timeパッケージのクラスを使用して、古い日付とカレンダーのクラスを置き換えます。 2。LocalDate、LocalDateTime、LocalTimeを通じて現(xiàn)在の日付と時刻を取得します。 3。of()メソッドを使用して特定の日付と時刻を作成します。 4.プラス/マイナスメソッドを使用して、時間を不正に増加させて短縮します。 5. ZonedDateTimeとZoneIDを使用して、タイムゾーンを処理します。 6。DateTimeFormatterを介したフォーマットおよび解析の文字列。 7.インスタントを使用して、必要に応じて古い日付型と互換性があります。現(xiàn)代のJavaでの日付処理は、java.timeapiを使用することを優(yōu)先する必要があります。

chromecanopenlocalfileslikehtmlandpdfsbyusing "openfile" ordraggingthemintotheblowser;
