gpt4 book ai didi

javascript - 删除特定对象上的 jQuery 委托(delegate)事件处理程序

转载 作者:数据小太阳 更新时间:2023-10-29 06:06:07 25 4
gpt4 key购买 nike

我已使用单个选择器将委托(delegate)事件处理程序附加到页面上的多个元素。由于事件是为单个元素触发的,所以我想仅根据某些条件逻辑关闭该元素的事件处理程序。 这意味着我不一定要在第一次点击时禁用该事件。但如果不关闭所有这些,我不知道该怎么做。

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 的 off documentation说我需要提供一个 string 作为第二个参数,而不是一个 jQuery 对象 ($(ev.target)),但是如果我提供一个字符串,就没有值(value)仅指点击的项目。

来自 jQuery 的关闭文档:

To remove specific delegated event handlers, provide a selector argument. The selector string must exactly match the one passed to .on() when the event handler was attached. To remove all delegated events from an element without removing non-delegated events, use the special value "**".

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

Here's a JSFiddle of the code above

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

最佳答案

通过网络阅读后,答案是你不能!您可以全部删除或不删除。解决方法可能类似于以下内容。

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

演示@ Fiddle

示例 HTML:

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

关于javascript - 删除特定对象上的 jQuery 委托(delegate)事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30512253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com