首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从页面中删除所有Javascript事件并将其放回页面

从页面中删除所有Javascript事件并将其放回页面
EN

Stack Overflow用户
提问于 2010-11-19 03:19:12
回答 6查看 3.3K关注 0票数 1

我想“暂停”一个页面的所有事件,这意味着删除所有事件集……然后可以把它们放回原处。

即使是第一部分=删除一个页面的所有事件,我也不知道该怎么做!你有什么想法吗?

我找不到任何有用的东西!

编辑:

为什么?我想在已经加载的页面中执行操作。用户将与页面交互,我希望控制交互...因此,删除之前设置的所有交互。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-11-23 00:39:24

这是我目前使用的解决方案:它不能完全解决问题!

我在捕获阶段停止了事件:我在文档对象上放置了一个侦听器,以侦听捕获阶段的所有事件并停止传播。

+:

  • List item
  • 部分解决了

的问题

-:

  • 不适用于IE (无捕获阶段)
  • 如果文档附加了其他事件,则会在我的侦听器之前触发。

你有更好的解决方案吗?

附言:如果我找到更好的解决方案,我会继续更新这篇文章

票数 1
EN

Stack Overflow用户

发布于 2010-11-19 03:38:14

您可以使用unbind()删除所有事件

代码语言:javascript
复制
$.unbind();
票数 1
EN

Stack Overflow用户

发布于 2010-11-19 03:47:02

您需要将所有事件侦听器存储在一个eventMap中。

代码语言:javascript
复制
EventMap = {

    listeners:[],
    paused:false,

    mapListener:function(eventDispacter, eventType, eventHandler) {
        listeners.push({eD:eventDispacter, eT:eventType, eH:eventHandler});

        if(!paused)
            eventDispacter.addEventListener(eventType, eventHandler);
    },

    unMapListener:function(eventDispacter, eventType, eventHandler) {
        for( var i=0; i<listeners.length; i++) {
            var listener = listeners[i];

            if(listener.eD == eventDispacter && listener.eT == eventType && listener.eH == eventHandler) {
                listeners.splice(listeners.indexOf(listener), 1);
                eventDispacter.removeEventListener(eventType, eventHandler);
            }               
        }
    },

    pauseEvents:function() {
        if(!paused) {}
            for( var i=0; i<listeners.length; i++) {
                var listener = listeners[i];
                listener.eD.removeEventHandler(listener.eT, listener.eH);
            }
        }
    },

    unPauseEvents:function() {
        if(paused) {}
            for( var i=0; i<listeners.length; i++) {
                var listener = listeners[i];
                listener.eD.addEventHandler(listener.eT, listener.eH);
            }
        }
    }
}

使用添加事件

代码语言:javascript
复制
<script>
    function handleClick( e ) {
        alert('Button Clicked');
    }

    EventMap.mapListener(document.getElementById('myButton'), 'click', handleClick);
</script>

使用的暂停事件

代码语言:javascript
复制
EventMap.pauseEvents();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4218637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档