jQueryを使って原生事件を触発する方法は使用しないでください。


JavaScriptフレームはこのように多くの機能を提供しています。うっかりして穴に落ちてしまいます。工具庫に対する依存度が高くなり、修正やメンテナンスの際に小さな修正が他の機能に影響を及ぼす可能性があります。特に数年前のレガシーコードを維持する時。私がよく見ているエラーの一つはjQueryに関するtriggerです。triggerは開発者が手動でいくつかのイベントをトリガすることを許可します。この機能は本当に強力で使いやすいですが、JSの中の元のイベント名を触発しないように約束を守ってください。注:他のJSフレームもこのような機能を提供していることを知っています。jQueryだけを例として使っています。人気のあるところを見たので、最近またちょうどこの問題にぶつかりました。すべてのツールクラスは同じ問題を引き起こす可能性があります。例えばMooToolsで使うfireEventなどです。以下はtriggerを使用してタスクを完了する典型的な例です。
 
// click
jQuery('.tabs a').on('click', function() {
// , , ..
});

// a click
jQuery('.tabs a').last().trigger('click');
上のコードは所与のindexのtabタグを開きます。開発者がtriggerを使ってこれらのことを処理する理由はよく分かります。トリガする関数は全体の領域では使えないので、イベントをトリガするのは簡単で、いつも使えるからです。問題は、元のイベント名を使ってトリガすることです。サイトの他のところに追加されている内容を見てみましょう。
 
// body click
jQuery('body').on('click', 'a', function() {
// ...

// (Condition met), !
if(conditionMet) {
// ?
// ?
// ?
// ... ,Intel
}
});
には現在問題があります。タブクリックイベントは他の完全独立した部分に傍受されるかもしれません。これは処理が面倒です。へへへ、一番いい解決策はオリジナルイベントの後にカスタマイズされたイベント名を使うことです。
 
// click ,
jQuery('.tabs a').on('click tabs-click', function() {
// tab, , ...
});

// " "
jQuery('.tabs a').last().trigger('tabs-click');
今あなたのイベントトリガーはもうページ上の他のモニターと衝突しません。保守的な開発者によると、トリガーを使わないようにしたいかもしれませんが、あえてカスタムイベント名を追加してください。