3 回答
TA贡献1797条经验 获得超6个赞
将单击事件附加到关闭窗口的文档主体。将单独的click事件附加到窗口,该事件将停止传播到文档主体。
$('html').click(function() {
//Hide the menus if visible
});
$('#menucontainer').click(function(event){
event.stopPropagation();
});
TA贡献1848条经验 获得超6个赞
答案是正确的,但它将添加一个侦听器,该侦听器将在您的页面上每次单击时触发。为了避免这种情况,您可以只添加一次侦听器:
$('a#menu-link').on('click', function(e) {
e.preventDefault();
e.stopPropagation();
$('#menu').toggleClass('open');
$(document).one('click', function closeMenu (e){
if($('#menu').has(e.target).length === 0){
$('#menu').removeClass('open');
} else {
$(document).one('click', closeMenu);
}
});
});
编辑:如果您要避免stopPropagation()使用初始按钮,可以使用此按钮
var $menu = $('#menu');
$('a#menu-link').on('click', function(e) {
e.preventDefault();
if (!$menu.hasClass('active')) {
$menu.addClass('active');
$(document).one('click', function closeTooltip(e) {
if ($menu.has(e.target).length === 0 && $('a#menu-link').has(e.target).length === 0) {
$menu.removeClass('active');
} else if ($menu.hasClass('active')) {
$(document).one('click', closeTooltip);
}
});
} else {
$menu.removeClass('active');
}
});
TA贡献1786条经验 获得超13个赞
如果您可以使用插件,那么我建议Ben Alman位于此处的clickoutside插件:
它的用法很简单:
$('#menu').bind('clickoutside', function (event) {
$(this).hide();
});
希望这可以帮助。
- 3 回答
- 0 关注
- 433 浏览
添加回答
举报