删除特定对象上的jQuery委托事件处理程序

超级马特

我已经使用一个选择器将委托事件处理程序附加到页面上的许多元素上。由于事件是针对单个元素触发的,因此我想基于一些条件逻辑关闭该元素的事件处理程序这意味着我不一定要在第一次单击时禁用该事件但是我无法在不关闭所有功能的情况下弄清楚该怎么做。

HTML:

<button>One</button>
<button>Two</button>
<button>Three</button>

JS:

$(document).on('click', 'button', function(ev) {
    // doesn't work because argument needs to be a string
    $(document).off('click', $(ev.target));

    // doesn't do what I want b/c turns off events on all buttons, not just this one
    $(document).off('click', 'button');

    // doesn't work because event is on document, not button
    $(ev.target).off('click');
});

jQuery的关闭文档说,我需要提供一个字符串作为第二个参数,而不是jQuery对象($(ev.target)),但是如果我提供一个字符串,则没有任何值仅指单击的项目。

从jQuery的关闭文档中:

要删除特定的委托事件处理程序,请提供选择器参数。选择器字符串必须与附加事件处理程序时传递给.on()的字符串完全匹配。要从元素中删除所有委派事件而不删除未委派事件,请使用特殊值“ **”。

那么,如何关闭特定元素的委托事件处理程序?

这是上面代码的JSFiddle

更新根据提供的初始答案,添加了一些不起作用的选项的示例

左旋基

通过网络阅读后,答案是您做不到!您可以全部删除或全部删除。解决方法可能如下所示。

$(document).on('click', '.btn', function (ev) {
    alert('pressed');
    $(this).removeClass("btn");
});

演示@小提琴

HTML示例:

<button class="btn">One</button>
<button class="btn">Two</button>
<button class="btn">Three</button>

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

丢失的jQuery委托事件处理程序

来自分类Dev

jQuery-委托事件处理程序时,它还会自动从不再匹配的元素中自动删除吗?

来自分类Dev

jQuery $(document).prepend:委托事件处理程序中的“ TypeError:e为空”吗?

来自分类Dev

更改div内容后jQuery不响应-委托事件处理程序

来自分类Dev

C#单元测试委托事件处理程序

来自分类Dev

jQuery:使用名称空间关闭原始对象的委托事件

来自分类Dev

如何删除YUI委托事件?

来自分类Dev

如何使用委托事件,名称空间以及附加多个事件处理程序

来自分类Dev

在委托事件上触发最近的按钮

来自分类Dev

jQuery对象上的事件处理程序

来自分类Dev

为什么悬停在委托事件处理程序中不起作用?

来自分类Dev

jQuery .on()委托事件处理不适用于通过局部视图加载的元素

来自分类Dev

删除特定的事件处理程序

来自分类Dev

在每个turbolinks页面中使用jQuery的委托事件on():load

来自分类Dev

委托事件内的jquery:not()选择器

来自分类Dev

使用jQuery获取委托事件中的clicked元素

来自分类Dev

在每个turbolinks页面中使用jQuery的委托事件on():load

来自分类Dev

在F#中的委托,事件,事件处理程序上

来自分类Dev

.on()委托事件未触发

来自分类Dev

.on委托事件,无需点击

来自分类Dev

在事件处理程序中删除jQuery事件处理程序

来自分类Dev

事件和委托事件之间的区别?

来自分类Dev

使用 jQuery 实用地测试特定事件处理程序(函数)是否绑定到对象的事件

来自分类Dev

删除绑定到处理程序的jQuery事件

来自分类Dev

删除绑定到处理程序的jQuery事件

来自分类Dev

委托事件和空引用

来自分类Dev

委托事件和空引用

来自分类Dev

表单未在委托事件中提交

来自分类Dev

委托事件触发,即使不该触发

Related 相关文章

  1. 1

    丢失的jQuery委托事件处理程序

  2. 2

    jQuery-委托事件处理程序时,它还会自动从不再匹配的元素中自动删除吗?

  3. 3

    jQuery $(document).prepend:委托事件处理程序中的“ TypeError:e为空”吗?

  4. 4

    更改div内容后jQuery不响应-委托事件处理程序

  5. 5

    C#单元测试委托事件处理程序

  6. 6

    jQuery:使用名称空间关闭原始对象的委托事件

  7. 7

    如何删除YUI委托事件?

  8. 8

    如何使用委托事件,名称空间以及附加多个事件处理程序

  9. 9

    在委托事件上触发最近的按钮

  10. 10

    jQuery对象上的事件处理程序

  11. 11

    为什么悬停在委托事件处理程序中不起作用?

  12. 12

    jQuery .on()委托事件处理不适用于通过局部视图加载的元素

  13. 13

    删除特定的事件处理程序

  14. 14

    在每个turbolinks页面中使用jQuery的委托事件on():load

  15. 15

    委托事件内的jquery:not()选择器

  16. 16

    使用jQuery获取委托事件中的clicked元素

  17. 17

    在每个turbolinks页面中使用jQuery的委托事件on():load

  18. 18

    在F#中的委托,事件,事件处理程序上

  19. 19

    .on()委托事件未触发

  20. 20

    .on委托事件,无需点击

  21. 21

    在事件处理程序中删除jQuery事件处理程序

  22. 22

    事件和委托事件之间的区别?

  23. 23

    使用 jQuery 实用地测试特定事件处理程序(函数)是否绑定到对象的事件

  24. 24

    删除绑定到处理程序的jQuery事件

  25. 25

    删除绑定到处理程序的jQuery事件

  26. 26

    委托事件和空引用

  27. 27

    委托事件和空引用

  28. 28

    表单未在委托事件中提交

  29. 29

    委托事件触发,即使不该触发

热门标签

归档