jQuery を使用して複数のイベントを同じ要素にアタッチする必要がある場合.on()
、すべてのイベントを 1 つの呼び出しに結合し、それらを使用して区別する必要がありevent.type
ますか? .on()
または、イベントごとに個別の呼び出しを行う必要がありますか?
複合イベント:
$('#main').on('mouseenter mouseleave click', '.myElement', function(event) {
if (event.type == 'click') {
return false;
} else if (event.type == 'mouseenter') {
$(this).addClass('active');
} else if (event.type == 'mouseleave') {
$(this).removeClass('active');
}
}
個別のイベント:
$('#main').on('click', '.myElement', function(event) {
return false;
}
$('#main').on('mouseenter', '.myElement', function(event) {
$(this).addClass('active');
}
$('#main').on('mouseleave', '.myElement', function(event) {
$(this).removeClass('active');
}
どれが一番速いですか?
[編集] 追加の詳細:明らかに 2 つの側面を考慮する必要があります。最初の側面は、ページの読み込みが完了し、これらのイベント ハンドラーが設定されているとき.on()
です。ただし、2番目の側面は、これらのイベントが実際にトリガーされるときです。マウスオーバーまたはクリック.myElement
が何度も発生するため、より重要であると信じていますが、.on()
呼び出しは1回だけ呼び出されます(DOMが変更された場合は複数回呼び出されますが、それでもイベント自体より少ない)。