取消绑定除特定名称空间之外的所有名称空间的事件

米沙尔

如果我将jQueryscroll事件处理程序绑定到特定的名称空间…

$(window).on('scroll._my_namespace',function() { ... });

除了分配给该名称空间的scroll事件处理程序之外还有什么方法可以解除所有事件处理程序的绑定例如,如果我这样做…

$(window).off('scroll._my_namespace');

…它将取消绑定该特定scroll处理程序,如果我这样做…

$(window).off('scroll');

…它将解除所有 scroll处理程序的绑定

到目前为止,我已经尝试过:

$(window).off('scroll.'); // Doesn't seem to do anything

没想到它会起作用,但是我想在发布之前最好尝试一下:

$(window).off('scroll:not("._my_namespace")'); // Also doesn't do anything

我想做的是取消绑定分配给特定名称空间的scroll事件处理程序以外所有事件处理程序有什么办法可以做到这一点?

阿伦·P·约翰尼

除了为必须删除的所有处理程序提供另一个公共命名空间外,我不知道使用公共api的任何方式。

但是,使用私人事件集合,您可以尝试类似

var events = $._data(window, 'events');
for (var i = events.scroll.length - 1; i >= 0; i--) {
    var handler = events.scroll[i];
    if (handler && handler.namespace != 'ns') {
        $(window).off('scroll', handler.handler)
    }
}

$(window).on('scroll.ns', function(e) {
  console.log('x', e.type, e.handleObj.namespace, e)
});
$(window).on('scroll.ns2', function(e) {
  console.log('y', e.type, e.handleObj.namespace, e)
});
$(window).on('scroll.t', function(e) {
  console.log('z', e.type, e.handleObj.namespace, e)
});

$('button').click(function() {
  var events = $._data(window, 'events');
  for (var i = events.scroll.length - 1; i >= 0; i--) {
    var handler = events.scroll[i];
    if (handler && handler.namespace != 'ns') {
      $(window).off('scroll', handler.handler)
    }
  }
});
body {
  height: 1000px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button>Remove</button>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

取消绑定除特定名称空间之外的所有名称空间的事件

来自分类Dev

不受支持的绑定名称空间“”

来自分类Dev

具有名称空间的CXF getNode,取消编组

来自分类Dev

取消某些事件处理程序与名称空间的绑定

来自分类Dev

取消某些事件处理程序与名称空间的绑定

来自分类Dev

拦截特定名称空间中的所有方法/构造函数/获取器/设置器

来自分类Dev

如何为所有Kubernetes服务帐户授予对特定名称空间的访问权限?

来自分类Dev

如何从dom文档中删除所有名称空间

来自分类Dev

BeaitifulSoup无法读取所有名称空间

来自分类Dev

获取与类型关联的所有名称空间?

来自分类Dev

XPath:选择具有名称空间的特定节点

来自分类Dev

具有名称空间的路径定义

来自分类Dev

带有名称空间包的pyinstaller

来自分类Dev

具有名称空间的openxml

来自分类Dev

具有名称空间的PostgresSQL xpath

来自分类Dev

有名称空间时的UPDATEXML

来自分类Dev

带有名称空间的jQuery浏览器事件名称

来自分类Dev

如何使用EclipseLink MOXy绑定名称空间的元素?

来自分类Dev

Rebus-Rabbitmq映射指定名称空间/程序集中的所有对象

来自分类Dev

仅在特定名称空间下自动映射

来自分类Dev

在T在特定名称空间中的地方注册通用

来自分类Dev

在特定名称空间C#中打印枚举列表

来自分类Dev

检查类型是否来自特定名称空间

来自分类Dev

Clojure:在特定名称空间中启动repl

来自分类Dev

为每个用户授予对特定名称空间的特权

来自分类Dev

查找范围为特定名称空间(模块)的常量(类)

来自分类Dev

在特定名称空间C#中打印枚举列表

来自分类Dev

仅在特定名称空间下自动映射

来自分类Dev

如何使用SimpleInjector获取特定名称空间的实例?

Related 相关文章

  1. 1

    取消绑定除特定名称空间之外的所有名称空间的事件

  2. 2

    不受支持的绑定名称空间“”

  3. 3

    具有名称空间的CXF getNode,取消编组

  4. 4

    取消某些事件处理程序与名称空间的绑定

  5. 5

    取消某些事件处理程序与名称空间的绑定

  6. 6

    拦截特定名称空间中的所有方法/构造函数/获取器/设置器

  7. 7

    如何为所有Kubernetes服务帐户授予对特定名称空间的访问权限?

  8. 8

    如何从dom文档中删除所有名称空间

  9. 9

    BeaitifulSoup无法读取所有名称空间

  10. 10

    获取与类型关联的所有名称空间?

  11. 11

    XPath:选择具有名称空间的特定节点

  12. 12

    具有名称空间的路径定义

  13. 13

    带有名称空间包的pyinstaller

  14. 14

    具有名称空间的openxml

  15. 15

    具有名称空间的PostgresSQL xpath

  16. 16

    有名称空间时的UPDATEXML

  17. 17

    带有名称空间的jQuery浏览器事件名称

  18. 18

    如何使用EclipseLink MOXy绑定名称空间的元素?

  19. 19

    Rebus-Rabbitmq映射指定名称空间/程序集中的所有对象

  20. 20

    仅在特定名称空间下自动映射

  21. 21

    在T在特定名称空间中的地方注册通用

  22. 22

    在特定名称空间C#中打印枚举列表

  23. 23

    检查类型是否来自特定名称空间

  24. 24

    Clojure:在特定名称空间中启动repl

  25. 25

    为每个用户授予对特定名称空间的特权

  26. 26

    查找范围为特定名称空间(模块)的常量(类)

  27. 27

    在特定名称空间C#中打印枚举列表

  28. 28

    仅在特定名称空间下自动映射

  29. 29

    如何使用SimpleInjector获取特定名称空间的实例?

热门标签

归档