我正在构建一个下拉组件。我想:
我有以下代码:
$('.js-dropdown-toggler').click(function(e){
$('.js-dropdown').removeClass('is-open');
$(this).next('.js-dropdown').toggleClass('is-open');
e.stopPropagation();
});
$('html').click(function(){
if ($('.js-dropdown').hasClass('is-open')) {
$('.js-dropdown').removeClass('is-open');
}
});
$('.js-dropdown').click(function(e){
e.stopPropagation();
});在第二次单击同一按钮时,它不会隐藏下拉列表。如果要删除$('.js-dropdown').removeClass('is-open');,则单击另一个按钮时下拉式保持不变。
我想问题是在toggleClass和stopPropagation中使用click事件。
我会感谢你的帮助。
发布于 2016-01-22 21:25:54
更改当前代码,如下所示:
$('.js-dropdown-toggler').click(function(e){
var current = $(this).next('.js-dropdown');
current.toggleClass('is-open');
$('.js-dropdown').not(current).removeClass('is-open');
e.stopPropagation();
});
$('html').click(function(){
if ($('.js-dropdown').hasClass('is-open')) {
$('.js-dropdown').removeClass('is-open');
}
});关键是你的下降应该是“相互排斥的”:当一个人出现时,另一个人同时隐藏起来。
发布于 2016-01-22 21:05:14
只需删除'.js-dropdown-toggler'处理程序中的这一行
$('.js-dropdown').removeClass('is-open');
https://stackoverflow.com/questions/34955791
复制相似问题