这是我的情况:
我的项目右键单击有一个自定义菜单。在这里,我点击了document.addEventListener
,这使得此菜单不可见,如下所示:
var i = document.getElementById("menu").style;
document.addEventListener('click', function(e) {
i.opacity = "0";
setTimeout(function() {
i.visibility = "hidden";
}, 100);
}, false);
它很棒,运行良好,但我正在实现一个下拉子菜单,当你点击某个元素时应该打开它,如下所示:
$('#change_color').click(function(){
if($('#back_color').hasClass('back_color')){
$('#back_color').removeClass('back_color')
}else{
$('#back_color').addClass('back_color')
}
})
问题是,当我点击#change_color
时,addEventListener
正在解雇,这很明显。
问题是 - 当我点击#change_color
时,如何防止该侦听器功能执行?
答案 0 :(得分:4)
您可以使用event.stopPropagation()阻止当前事件在捕获和冒泡阶段进一步传播,为简单起见,使用jQuery.toggleClass()。
代码示例:
$('#change_color').click(function (e) {
$('#back_color').toggleClass('back_color');
e.preventDefault();
e.stopPropagation();
});