ご存じのように、イベントは通常javascriptでバブルアップするので、イベントを発生させる要素のイベントハンドラが最初に実行され、次に親要素のイベントハンドラが呼び出されます。この動作は、私が現在取り組んでいるプロジェクトでいくつかの問題を引き起こし、むしろ実行順序を逆にすることになります。javascriptのイベントのバブリングを逆にする
私はタイムアウトを使用しているソリューションをfiguered:
$(element).mouseover(function(){
var that = this;
setTimeout(function() {
//actual event handler, but references to "this" are replaced with "that"
},$(this).parents().length)
});
だから、基本的には、イベントハンドラが短いタイムアウトの後に実行され、待機時間がDOMツリー内の要素の深さに依存: html要素のイベントハンドラはすぐに実行され、body要素のイベントハンドラは1ms待ってから実行されます。したがって、イベントの実行順序は逆になります。
私の最初のテストの結果は肯定的ですが、この解決策に問題や欠点があるかどうかはまだ分かりません。この解決策についてどう思いますか?この問題を解決するための他のアイデアも高く評価されています。
私は親の*量*をタイムアウトのミリ秒単位で*設定する理由を理解していません。 – pimvdb
これは、リーフ要素のイベントハンドラを実行するのが遅れて、最後にチェーン内で実行されるようにするためです。 – WTK