0

我搜索了 hi 和 low ,但找不到解决方案。我已经尝试了一切..但无法让这件事起作用。

注意:不能使用 ".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
 })

ETC...

和一堆更多..基本上,不能让这个东西工作。无论我做什么,整个页面都是可点击的。

当我做一些简单的事情时:很好用。

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

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

我要排除的两项是: id:mainID 带有“.class1”类 id:anotherID 带有“.class2”类

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

4

1 回答 1

2

让我指出一些与事件委托有关的事情:

  1. 首先,不推荐使用.on()函数.delegate()

  2. 其次,.class1 .class2将匹配class2which is insideclass1

    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什么都不会发生。如果您只想class在 id 中选择特定的,您可以将#mainID .class1其用作选择器。或使用较旧的事件委托:

jQuery('body').delegate(':not(.class1, .class2)','click', function(e){ 
    // do something
    // but this will execute on every where you click except .class1, .class2
})
于 2013-09-26T06:33:44.033 回答