いくつかのオプションがあります。私は両方の状況に応じて使用します。
1)他の関数からイベントハンドラを分離し、パラメータを使用します。
<button id="button_validate_form">Validate</button>
<button id="button_submit_form">Sumbit</button>
const doWork = function doWork(event, context) {
if (context === 'event_validate_form') alert('!');
else if (context === 'event_submit_form') alert('?');
else alert('undefined event');
};
document.querySelector('#button_validate_form').addEventListener('click', event => doWork(event, 'event_validate_form'));
document.querySelector('#button_submit_form').addEventListener('click', event => doWork(event, 'event_submit_form'));
2)同じ話ですが、関数にパラメータを追加する代わりに、実際のDOMノードでデータ属性を使用します。
<button id="button_validate_form" data-context="event_validate_form">Validate</button>
<button id="button_submit_form" data-context="event_validate_form">Sumbit</button>
const doWork = function doWork(event) {
const context = event.target.getAttribute('data-context');
if (context === 'event_validate_form') alert('!');
else if (context === 'event_submit_form') alert('?');
else alert('undefined event');
};
document.querySelector('#button_validate_form').addEventListener('click', event => doWork(event, 'event_validate_form'));
document.querySelector('#button_submit_form').addEventListener('click', event => doWork(event, 'event_submit_form'));
関数に渡される引数を見ることができます。クリックハンドラの引数は非常に限定されています。 – Cerbrus
http://api.jquery.com/is/ – Osama
パラメータを追加するだけです: 'function func1(e){...'。関数がイベントを処理している場合、イベントは最初のパラメータとして渡されます。 'if(e)...'で十分です。 –