2

これに何度か遭遇しました。document.on()を使用して要素を操作したいのですが、イベントなしで.on()を使用する方法を理解できません。

私はよくajaxを使用して要素をDOMに挿入し、頻繁にdocument.on()を使用してそれらの挿入された要素にバインドする必要があります。これは、要素を選択してその情報を取得したい場合に完全に機能します。

たとえば、クリックイベントを介してセレクターに接続するには、次のように記述します。

$(document).on('click', '.mledit', function(event) {
    alert($(this).val());
}

ただし、その要素にフォーカスを設定したい場合はどうなりますか?どうすればいいですか?私が試してみました:

$(document).on('focus', '.mledit');

そして、他に何を試すべきかについて途方に暮れています。

私がこれを行う必要がある理由は、現時点で(そして私は以前ここにいたことがありますが)、標準$('.mledit').focus();が機能していないためです。他のすべては大丈夫のようですが、その1つの命令はそうではありません。ですから、そのような場合でもdocument.on()を使用できるのではないかと思います。

4

5 に答える 5

3

.onはイベントをバインドするためのものであり、探しているのは要素でイベントをトリガーする方法です。

例えば

$('.mledit').trigger('focus');

同時に、jQueryにはいくつかの便利な/ショートカット関数もあり、それらがどのように呼び出されるかに応じて、内部で.onまたは.triggerのいずれかに委任されます。

たとえば、フォーカスメソッドを使用してフォーカスをトリガーすることもできます

$('.mledit').focus()

内部的には、実際にはメソッドに委任するだけtriggerですが、関数を渡す場合は、代わりにその関数を渡されたにバインドしますselecter

あなたの編集を見ただけです。

使用時にフォーカスイベントが機能しない理由はわかりません$('.mledit').focus()が、複数の要素を一致させており、1つの要素にしかフォーカスできないことが原因であると思われます。jQueryセレクターを使用すると、返されるのはjQueryオブジェクトであり、この返されたjQueryオブジェクトでメソッドを呼び出すと、一致するすべての要素で実際に呼び出されます。

一致した要素の配列の最初の要素にアクセスするためのショートカットとして、よく表示されます

$('#someSelecter')[0]

したがって、あなたの場合、1つの(そして最初に一致した)要素のみでフォーカスイベントを明示的にトリガーします

使用できます

$($('.mledit')[0]).focus() r

ダブルラッピングの理由は、jQueryメソッドを持たない[0]通常の要素を返すためです(ラッピングによってjQueryオブジェクトが作成されます)。DOM

于 2012-11-13T20:27:52.700 に答える
2

これ:

$('.mledit')[0].focus();
于 2012-11-13T20:25:02.940 に答える
1

フォーカスを設定したいときは..ただ実行してください-ただし、複数ある場合は、.eq()または[]を使用してフォーカスを設定するものを指定する必要があります。

$('.mledit').focus()

jQueryは、トリガーするイベントを渡すためのtrigger()メソッドも提供します

于 2012-11-13T20:24:42.430 に答える
0

onの代わりにtriggerを使用します。

$(SELECTOR).trigger(EVENT_TYPE);
于 2012-11-13T20:25:51.170 に答える
0

「selector」に一致する要素でイベント「foo」をトリガーする必要がある場合は、次の構文を使用してください。

$('selector').trigger("foo");

あなたの場合:

$('.mledit').trigger("focus");
于 2012-11-13T20:27:08.433 に答える