作为 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 个错误,但一切都在实际站点上运行。当您单击列表菜单中的项目时,它会正确显示您单击的项目。当您单击 id 为 #all 的 li 时,它会正确显示所有项目并以漂亮的小幻灯片动画关闭菜单。
所以是的,它有效,但它只是“感觉”是错误的做法。这是一种可接受的最佳实践方法吗?
当我检测到所有被点击时,我也可以在 filter() 函数中触发 closeMenu() 函数,但是如果上面的方法是好的,那么我宁愿不花时间(实际的站点比上面的要复杂得多例如,所以我必须在很多地方这样做)。