奇妙な理由で、この単純な関数は機能しないようです。
$("body").on("focus", this, function(){
alert('d');
})
this
inputまたはtextarea要素です。
私がこれを行うとしたら:
$(this).on("focus", function(){
alert('d');
})
現在存在する要素では機能しますが、新しく作成された要素ではイベントが発生しません。何が間違っているのでしょうか。
奇妙な理由で、この単純な関数は機能しないようです。
$("body").on("focus", this, function(){
alert('d');
})
this
inputまたはtextarea要素です。
私がこれを行うとしたら:
$(this).on("focus", function(){
alert('d');
})
現在存在する要素では機能しますが、新しく作成された要素ではイベントが発生しません。何が間違っているのでしょうか。
2番目のパラメーターは、APIで説明されているように、「イベントをトリガーする選択された要素の子孫をフィルター処理するためのセレクター文字列」です。
this
あなたの場合、DOM要素だと思います。入力またはテキストエリアに一致するようにセレクターに変更してみてください。これにより、セレクターに一致する要素からfocus
イベントが発生するたびに関数が呼び出されます。body
これはあなたのために働くはずです:
$("body").on("focus", "input, textarea", function() {
alert('d');
});
詳細については、 http on()
://api.jquery.com/on/をご覧ください。
@ grantman16が、2番目のパラメーターはセレクターでなければならないと述べているように、
しかし、それが新しく作成された要素である場合は、 focus()を使用してみませんか。
var input = $("<input>");
input.focus(function() {
alert('d');
});
$("body").append(input);
を使用する必要はありませんが、使用.on
することに固執する場合は、セレクターを2番目のパラメーターとして設定する必要があります。
var input = $("<input>").addClass("lastInput");
$("body").on("focus", "input.lastInput", function() {
alert('d');
});
$("body").append(input);
あなたはこのようなものが欲しいです:
$(document).ready(function() {
$("body").on("focus", 'textarea, input', function(){
console.log('d');
})
});