【发布时间】:2019-02-14 09:04:16
【问题描述】:
我正在处理另一位开发人员的工作,并试图解决他的疏忽。我们有一个过滤系统,它打开带有复选框的下拉菜单,我们可以通过它过滤列表网格。但是,最初旧的开发人员使用的是 toggleClass,所以我们只能通过再次单击相同的 h3 标签来关闭下拉菜单,这意味着可以堆叠各种下拉菜单。
我设法解决了这个问题,以便单击不同的过滤器 h3 标记将关闭所有下拉菜单,但这将不允许您通过再次单击相同的 h3 标记来关闭下拉菜单。
我决定最方便用户使用的方法是在我单击下拉列表除了的任何位置时关闭下拉列表。
基于这里的一些类似问题,我想出了这个:
$(document).click(function() {
$(".open_filter").removeClass("open_filter");
});
jQuery('.filter-section h3').on('click', function() {
jQuery(this).toggleClass('arrow-down');
if (!jQuery(this).parent().find('.lef-shop-section ul').hasClass('open_filter')){
jQuery(this).parent().find('.lef-shop-section ul').addClass('open_filter');
} else {
$(".open_filter").removeClass("open_filter");
}
});
我不是 jQuery 方面的佼佼者,我对标准 js 感觉更舒服,但我敢肯定,你可以说,上述方法不起作用,除非我删除 $(document).click(function() 行和那么我只能通过再次单击它的h3 标签来关闭一个下拉菜单,或者单击另一个h3 标签两次以打开一个新标签,然后将它们都关闭。
【问题讨论】:
-
你为什么同时使用
jQuery和$? -
为所有的 SO 用户提供帮助会更好,也更容易
-
@JamesCoyle 旧开发人员使用 jQuery(不知道为什么),我正在使用 $,因为这就是我所理解的......我假设我可以用 $ 替换 jQuery 是否正确?
-
其他东西可能正在使用
$。这通常是使用jQuery的唯一原因。 -
@JamesCoyle 很有趣...我已经在我的代码中用 jQuery 替换了所有 $ 实例。它没有改变任何东西,但至少它是一致的。
标签: javascript jquery