gpt4 book ai didi

javascript - 您能否将带有 .on() 和 .off() 标记的元素的子部分作为目标?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:34:55 25 4
gpt4 key购买 nike

遇到以下情况时遇到问题:

$(document).on("click", ".element", function () {do something}

<div class="element"></div>
<div class="element"></div>
<div class="element" attribute="different"></div> //do something different
<div class="element"></div>

$('.element[attribute="different"]').off();
$(document).on("click", ".element[attribute="different",
function () {do something unique}

在这种情况下,.off() 不起作用。有没有办法实现我在这里尝试做的事情?

{{注意}}

在这种情况下,我无法修改原始的 .on 事件。它内置于我们正在处理特定事件的系统中。

http://jsfiddle.net/KMrVY/

最佳答案

您可以只在相关属性上使用 on 开始。有了这个,你就不需要使用 off 了。这是一个 JSFiddle准确展示如何使用这个东西。

$(document).on('click', '.element[attribute!="different"]', function() {});

This answer对正在发生的事情有一些了解。以下是摘录:

When using the dynamic form of .on() (where you pass a selector as an argument to .on()), you can't remove just part of the items. That's because there's only one event handler installed on the root element and jQuery can only remove the entire thing or not at all. So, you can't just .off() some of the dynamic items.

他建议的一种方法是关闭整个事件(在您的情况下,在所有.element上),然后使用特定的选择器重新创建它你需要。我有 updated the JSFiddle实际展示这一点(尽管获取您需要的处理函数并不漂亮)。

如果您有对原始处理程序函数的引用,它将使它变得容易得多。

关于javascript - 您能否将带有 .on() 和 .off() 标记的元素的子部分作为目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16973428/

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