Как относительный noob для javascript и jQuery, мне было любопытно, если неправильно прикреплять 2 обработчика кликов к одному элементу? Я знаю, что могу это сделать, но я просто любопытно, если это нарушение «лучших практик»Можно ли подключить два обработчика кликов к одному элементу?
Пример HTML:
<ul>
<li id="all" class="click_listener"> All Items </li>
<li id="item1" class="click_listener"> Item 1 </li>
<li id="item2" class="click_listener"> Item 2 </li>
<li id="item3" class="click_listener"> Item 3 </li>
</ul>
Пример JQuery (в документе готов):
$(".click_listener").click(
function() {
var productCode = $(this).id;
filter(productCode);
}
);
$("#all").click(
function() {
closeMenu();
}
);
Другие функции JQuery:
function filter(productCode) {
// Displays selected product, or if 'all' was passed in, displays all products.
}
function closeMenu() {
// Closes the menu by slideUp-ing the parent <ul>
}
в моей попытке упростить код, я, возможно, сделал ошибку, или 2, но everyth ing работает на фактическом сайте. Когда вы нажимаете элемент в меню списка, он правильно отображает элемент, который вы нажали. Когда вы нажимаете li с id #all, он правильно отображает все элементы и закрывает меню с помощью небольшой анимации slideUp.
Так что да, это работает, но это просто «чувствует», как неправильный способ сделать это. Является ли это приемлемым методом передовой практики?
Я мог бы вызвать функцию closeMenu() внутри функции filter(), когда я обнаружил, что все было нажато, но если вышеуказанный подход в порядке, то я бы предпочел не тратить время (фактический сайт значительно более сложный, чем приведенный выше пример, поэтому я должен был бы сделать это в кучке мест).
Возможный дубликат [Могут ли несколько слушателей событий/обработчики быть добавлен к тому же элементу с помощью javascript?] (http://stackoverflow.com/questions/5411055/can-multiple-event-listeners-handlers-be-added-to-the-same-element-using-javascr) –