3

次のコードを使用して、id を持つ contenteditable div 内にフォーカスされているものを参照しようとしていますrt:

var lastfocused;
$("#rt *").focus(function () {
  lastfocused = $(this);
});

何らかの理由で、lastfocused は常に equal ですが$("#rt");、contenteditable div 内にある可能性のある他のものは決して等しくありません。lastfocusedcontenteditable div 内にフォーカスされたものが変数に格納されるようにするにはどうすればよいですか?

4

2 に答える 2

2

あなたの問題は他の場所にあるようです。上記のコードは私にとって完全に機能します:

http://jsfiddle.net/8hZWq/

編集

あなたが言ったように子要素が入力ではなく、divの場合 - focus() メソッドは入力、テキストエリア、選択などでのみ機能するため、それらには適用されません.

focus() の代わりに .click() を使用して、最後にクリックされた要素への参照を保存することもできます。ただし、要素の構造にも依存することに注意してください。

たとえば、子 div 内に複数レベルのコンテナーがある場合、#ID *セレクターは実際には、#ID から始まる子の各レベルを複数回トリガーします。

#ID の最初のレベルの子のみへの参照を保存する場合は、#ID > *セレクターを使用して直接の子のみを参照する必要があります。

コンテナに対するレベルに関係なく、クリックされた要素のみへの参照を保存したい場合は、代わりにクリック イベント ターゲット参照を使用する必要があります。

var clicked;
$('#ID').click(function(event){
   clicked = $(event.target);
});
于 2012-09-01T09:01:21.800 に答える
0

実際、あなたの問題は、関数からの変数宣言が原因です。これを設定すると、各フォーカス イベントで「lastfocused」変数が再割り当てされます。

私は後で来ましたが、私がここに着いたら、他の誰かができます。

これを行う:

$("#rt *").focus(function () {
   var lastfocused = $(this);
});
于 2017-06-21T07:25:40.503 に答える