これは以前に尋ねられたと確信していますが、私は答えを見つける運がなかった。おそらく私にはわからない言葉があります。イベントハンドラの戻り値をオーバーライドしますか?
jQueryイベントハンドラは、トリガされた要素以外の要素を返すことはできますか?
通常、要素のjQueryイベントをトリガすると、その要素はイベントハンドラによって返されます。代わりに別の要素を返す方法はありますか?ここで
(event.target
、event.currentTarget
など以外は)私のHTMLです:私は#wrapper
のカスタムjQueryのイベントを行った場合
<div id="content">
<div id="wrapper">
<div class="instance">
</div>
</div>
</div>
、私はそのイベントハンドラが.instance
を返すことができますか?ここで
は私のJavaScriptのだ:
$('#content').on('new.instance', '#wrapper', function(event) {
var wrapper = $(event.currentTarget);
var instance = wrapper.find('div.instance').first();
var newInstance = instance.clone(true, true);
newInstance.appendTo(wrapper);
return newInstance;
});
var returnValue = $('#wrapper').trigger('new.instance');
console.log('returnValue.html():', returnValue.html()); // #wrapper, not .instance
私はnew.instance
イベントハンドラが.instance
要素を返すことはできますか?もしそうなら、コードには何が欠けていますか?
このセットアップでは、動作しませんイベントハンドラは、値(少なくともこの方法で)と '$(...)を返しません。(...)に'ですコールバックの戻り値ではなく、jQueryコレクションを返すことになります。イベントハンドラ内で必要な作業を実行できませんか? –
はい、 '.instance'は' bubblingPhase'のときに同じパス上にあるevent.chain上にあるためです。あなたは '。インスタンス 'から何を正確に期待しますか? '.instance'をe.targetとして取得できます。 – zer00ne
私は基本的に、jQueryイベントをコンストラクタとして使用できるかどうかを確認しようとしていました。私は関数から新しい '.instance'を吊り上げてきましたが、戻り値からそれを得ることができれば、もっとクリーンになります。 – GreenRaccoon23