如果用户单击汉堡图标,我希望从汉堡菜单显示项目,如果用户单击其他地方,则希望再次隐藏该项目。我的第一个(也是当前的)想法是这样的:
$('.brgIcon').on('click',function(){
$('.brgItem').slideToggle();
$('html').on('click',function(){
$('.brgItem').slideUp();
$('html').off('click');
})
})
但是效果不好。这些项目会向下滑动然后直接向上滑动。 怎么了?
Thx:-)
答案 0 :(得分:2)
您可以使用e.stopPropagation()阻止调用html click。
$(document).ready(function(){
$('.brgIcon').on('click',function(e){
$('.brgItem').slideToggle();
e.stopPropagation();
});
$('html').on('click', function(){
$('.brgItem').slideUp();
})
})
要了解此行为,请参见在javascript中捕获和冒泡事件。 https://javascript.info/bubbling-and-capturing
答案 1 :(得分:1)
因为$('.brgIcon')
是$('html').on('click',function(){...
的一部分,当您单击hamMenu时,它会同时同时slideDown
和slideUp
。因此您不会在屏幕上看到任何差异(很可能)。
您需要做的是将菜单容器放在width
和height
为100%,固定为position
的另一个分区中。和“ onClick”将整个容器向下滑动。
在这种情况下,您可以选择$('container:not(.menu)').click
菜单slideUp
。
我希望你能弄清楚:)