首页>Program>source

object.stopPropagation() 我可以停止事件冒泡,但是如何重新启用它呢?

js中是否有诸如 object.startPropagation之类的预定义函数 ?

EDIT:

问题是,即使我不想要它,JS也会记住是否单击"对象"而不是始终停止事件冒泡,所以我想停止它:

document.getElementById("object").onclick = function(e){
    if(e && e.stopPropagation) {
        e.stopPropagation();
    } else {
          e = window.event;
          e.cancelBubble = true;
    }
}
最新回答
  • 11天前
    1 #

    根本不记得它的值.事件 e 每次都是新的 被解雇了.问题是你是 onclick 取消事件冒泡:

    always
    
    if(foo) { e.stopPropagation(); } else { e.cancelBubble = true; }

      是w3C方法 防止事件冒泡。

      e.stopPropagation 是微软 防止事件冒泡的方法。

      他们都是一样的.因此,您每次都取消事件冒泡.在这里阅读更多.

      您需要更改方法,以便仅在满足条件时才取消冒泡:

      e.cancelBubble
      

      document.getElementById("object").onclick = function(e) { if(e && e.stopPropagation && someCriteriaToStopBubbling === true) { e.stopPropagation(); } else if (someCriteriaToStopBubbling === true) { e = window.event; e.cancelBubble = true; } } 请记住,在您当前的代码中, UPDATE: 如果浏览器支持 if (e && e.stopPropagation),则将始终为true .如果进入 stopPropagation的第二大括号 ,它不会记住上一次设置的值.看到这个小提琴.

      总而言之,总的来说,在您的代码中,每次单击后都会取消传播.您必须在函数中添加一些标准,以确定是否要取消沿元素层次结构的传播。

      cancelBubble

  • ajax:从ASPNET MVC返回null时,jQuery post JSON失败
  • 用于嵌入C#/。NET应用程序的脚本语言?