gpt4 book ai didi

javascript - jQuery delegate 和 .not 的时代恶魔

转载 作者:行者123 更新时间:2023-12-02 18:18:57 25 4
gpt4 key购买 nike

我已经搜索了高低但找不到解决方案。我已经尝试了一切..但无法让这个东西发挥作用。

注意:不能使用“.on()”。使用仅支持 .live/.delegate 的旧版本 jQuery

基本上,我有一个非常复杂的网页..并且到处都有事件处理程序..但是,我基本上想在主体上附加一个点击事件,但排除某些ID。伟大的。我想这很容易。

尝试过:

 jQuery('body').delegate('.not("#mainID #anotherID")','click', function(e){ 
// do something
})

jQuery('body').delegate(':not(".class1 .class2")','click', function(e){
// do something
})

等等...

还有一堆……基本上,无法让这个东西工作。无论我做什么,整个页面都是可点击的。

当我做一些简单的事情时,比如:太棒了,它很有效。

 jQuery('body').delegate('#someID','click', function(e){ 
// do something
})

但这不是我需要的。我基本上需要允许单击整个主体,除了页面的两个子集、较小的部分之外。我认为这是微不足道的..但由于某种原因,只是不起作用。

我要排除的两项是:id:mainID,带有“.class1”类id:另一个ID,带有“.class2”类

另一个注意事项:mainID 位于 anotherID 之外 - 页面的两个不同部分。两个 div。

最佳答案

让我指出一些与事件委托(delegate)相关的事情:

  1. 首先,使用.on()函数,.delegate() 已弃用。

  2. 其次,.class1 .class2 将匹配 class1 内的 class2

    jQuery('body').on('click', ':not(.class1, .class2)', function(e) { 
    // do something
    })

但是,这也不是您需要的,您需要:

$(".class1, .class2").on('click', function() { return false; });

如果您使用旧版本的 jQuery 并且由于某种原因无法更改它,请使用 .live() 或普通的 .click() 处理程序:

$(".class1, .class2").click(function() { return false; });

现在,如果您单击 .class1.class2,什么也不会发生。如果您只想选择 id 中的特定class,您可以使用#mainID .class1 作为选择器。或者使用较旧的事件委托(delegate):

jQuery('body').delegate(':not(.class1, .class2)','click', function(e){ 
// do something
// but this will execute on every where you click except .class1, .class2
})

关于javascript - jQuery delegate 和 .not 的时代恶魔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19020935/

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