jqueryのlive()
と同様の機能を持つイベントハンドラ用の純粋なjavascript関数をどこでも取得できますか?まだ作成されていないオブジェクトにイベントをアタッチする機能が必要ですが、jquery-livequeryとjquery-eventsの両方のソースは、jqueryコアの依存性のために有用ではありません。jqueryライブ関数のシンプルなバージョン
答えて
イベントの委任は非常に簡単です。この例を見てみましょう:
マークアップ:
<div id="container">
<p>Test</p>
<p>Test</p>
<p>Test</p>
</div>
<button id="add">Add new paragraph</button>
スクリプト:
document.getElementById("container").onclick = function(e) {
// e.target is the target of the event or "source element"
alert(e.target.innerHTML);
};
// dynamically adds new paragraph on button click
document.getElementById("add").onclick = function() {
var p = document.createElement("p");
p.innerHTML = "a new paragraph";
document.getElementById("container").appendChild(p);
};
イベントハンドラが親に取り付けられているので、それが挿入され、将来の要素のために動作します。
便利な参照:
jQueryのは、純粋なJavaScriptとオープンソースですので、ちょうどあなたが必要なものをコピーし、元に見てそれを適応させる。
+1それはすでにクロスブラウザでテストされていることは言うまでもありません。より大きな目的を果たしていないときに人々が「ホイールを再発明する」必要性を感じている理由はわかりません。 – Sparky
私はその好奇心が強いと思っています;しかし、一方でIEのオッズとエンドだけを扱うと病気になります; –
jQueryのあまり多くは、通常のDOM操作のようには見えません。それはそれ自身のミニプラットフォームの上に非常に多くのレイヤーで構築されているので、DOM呼び出しが実際に比較的簡単なjQuery操作で作られたものを理解することは間違いなく困難です。私はこれがjQueryには悪いと言っているわけではありません。あなたの提案はjQueryで考えるほど簡単ではありません。実際にDOMを呼び出してから、実際にDOMを呼び出してからjQueryをコピーしたり移動したりするのは簡単ではありません。 @ karim79の答えははるかに役立ちます。 – jfriend00
はい、これはイベントの委任と呼ばれ、jQueryと「live」よりも長く続きました。
"live"は、本体またはドキュメントのイベントをリッスンすることで動作し、イベントが発生したときに、event.targetを参照してセレクタがキャッシュに格納されているセレクタと一致するかどうかを確認します。非常に非効率的ですが、一部の人にとっては問題ありません。
より効率的なアプローチでは、リスナーに必要な要素を配列に追加し、イベントを委譲する要素の最も共通の祖先でバブリングイベントを待ち受けます。 body要素はフォールバックですが、それは最も効率が悪いです。リスナーが待機中のイベントを取得すると、event.targetが配列内の要素の1つであるかどうかを確認し、そうであれば、要素がの関連関数をこのとして呼び出します。
要素idをオブジェクトのプロパティとして格納するだけで、要素をたくさん持っている場合の検索が高速になり、クラスに基づいてイベントを登録することもできます。
いくつかの制限と弱点があります(いくつかのブラウザではいくつかのバブルがありますが、バブルはありません)。非常に非効率的な場合がありますので注意して使用してください。
私はJqueryとあなたの機能がほとんど分かりません。 JavaScriptでイベントの仕組みを見ていますか?
element.addEventListener('onclick',
function() {
//do something
});
または
element.onclick =
function() {
//do something
});
element
varは、DOMドキュメントの参照です: あなたは、このことができます。詳細については、 チェックhttps://developer.mozilla.org/en/DOMをご確認ください。
- 1. jQueryライブ関数のプロトタイプ
- 2. jquery関数はライブで動作し、
- 3. ライブにjquery関数を追加する
- 4. シンプルなJavascript関数
- 5. 別のjQueryバージョンの関数クロージャ
- 6. jQueryの:「ライブ」との違いは、関数の
- 7. ページのAsynchCallback関数vs Jqueryレンダリング.Netライブ情報
- 8. シンプルなJavaScript関数の問題
- 9. シンプルなjQueryフィルタリング
- 10. シンプルなJqueryフォトギャラリー
- 11. シンプルなjQueryページネーミング
- 12. シンプルなjqueryプラグイン
- 13. シンプルなJQueryポップアップ
- 14. シンプルなjqueryトリガヘルプ
- 15. シンプルなjQueryスライダー?
- 16. シンプルなjQueryのカウンター
- 17. jQueryのシンプルなタブ
- 18. シンプルなjQueryのナビゲーション
- 19. シンプルなC関数呼び出し
- 20. jQueryの検証ライブ
- 21. JqueryライブRSSフィード?
- 22. シンプルなモーダルJSON Jquery
- 23. シンプルなjquery? noob here
- 24. シンプルなJQueryフェードイン/アウト
- 25. (コード)はシンプル、セキュアハッシュ関数
- 26. シンプルなjQueryのクラス配列
- 27. シンプルなjQueryの質問
- 28. シンプルなjQueryの機能
- 29. シンプルなjQueryプログレスバーのパーセント
- 30. jQueryのシンプルな画像ズーム
はい、可能ですか?Jqueryはjavascript言語で作成されたライブラリです。 自己のすべての機能は、書き直すことができます –
なぜこの車輪を再発明していますか?この関数のjQueryに依存していると何が問題になりますか? – Sparky
新しい要素をページに追加するためにどのような方法を使用していますか?要素を追加する同じコードでイベントを配線できないのはなぜですか? – ErikE