如何在执行另一个函数时阻止自定义函数执行

时间:2017-12-26 19:52:15

标签: javascript jquery

这是我的情况:

我的项目右键单击有一个自定义菜单。在这里,我点击了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时,如何防止该侦听器功能执行?

1 个答案:

答案 0 :(得分:4)

您可以使用event.stopPropagation()阻止当前事件在捕获和冒泡阶段进一步传播,为简单起见,使用jQuery.toggleClass()

代码示例:

$('#change_color').click(function (e) {
  $('#back_color').toggleClass('back_color');
  e.preventDefault();
  e.stopPropagation();
});