С точки зрения производительности , это почти то же самое. Нативный javascript метод, который jQuery вызывает, addEventListener
, который принимает только 1 событие в качестве аргумента. Нравится ли это jQuery или нет, добавление многих слушателей событий требует вызова addEventListener
один раз для каждого слушателя. Убедитесь сами:
- Создайте новый файл с именем
index.html
примерно так:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>title</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
</head>
<body>
<div id="cart">cart</div>
<script>
$( "#cart" ).on( "mouseenter mouseleave", function( event ) {
$( this ).toggleClass( "active" );
});
</script>
</body>
</html>
Откройте его с помощью браузера. Go для инструментов разработчика вашего браузера (пример ниже для Chrome), найдите файл
jquery.js
и поместите точку останова в строку 5039:
Перезагрузите страницу и посмотрите отладчик.
Она будет go до точки останова ровно дважды, один раз для каждого события, которое вы хотите прослушать. Если вы измените тег сценария следующим образом:
$( "#cart" ).on( "mouseenter mouseleave click focus blur", function( event ) {
$( this ).toggleClass( "active" );
});
Теперь он будет проходить точку останова 5 раз, как и ожидалось.
По сути, этот jQuery код:
$('#cart').on("mouseenter mouseleave", myCallback);
эквивалентно
$('#cart').on("mouseenter", myCallback);
$('#cart').on("mouseleave", myCallback);
эквивалентно:
document.getElementById('cart').addEventListener("mouseenter", myCallback);
document.getElementById('cart').addEventListener("mouseleave", myCallback);
Вывод: Используйте все, что вам эстетически нравится.