jQuery $(document).on と $(selector).on の違い
$(document).on は動的に追加されたHTMLに対してもイベントを処理できます。
一方で、$(selector).on は、その時点のHTMLに対してのみ作用します。
以下が例です。
まず、$(selector).on の場合です。
const hoge = () => console.log("hoge");
$(function(){
$("#my-btn").on("click", hoge);
$("body").append("<button id='my-btn'>button2</button>");
});
#my-btn に対してクリックイベントを登録した後に、ボタンを追加しています。
イベント登録のタイミングでは、まだ #my-btn は存在しないため、ボタンを押してもコンソールには何も出力されません。
次に $(document).on の場合です。
const hoge = () => console.log("hoge");
$(function(){
$(document).on("click", "#my-btn", hoge);
$("body").append("<button id='my-btn'>button2</button>");
});
$(document).on の場合は、動的に追加されたHTML(この場合 #my-btn)にも作用するため、ボタンを押すとコンソールに「hoge」と出力されます。
最近のコメント