jquery на элементе click click, если он не находится в определенном классе - PullRequest
5 голосов
/ 28 ноября 2010

Я пытаюсь это сделать, но пока что никому не известно, как выбрать элемент при нажатии. но не включать элементы в конкретный div, такие как .box и все содержимое внутри этого div .box

небольшое обновление: спасибо за ответы, но если я использую :not или hasClass, это не гарантирует, что элементы внутри этого foo не будут выбраны. как:

<div class=foo>this won't be selected <span>this will</span></div>

Ответы [ 3 ]

9 голосов
/ 28 ноября 2010

Вы можете использовать метод hasClass():

$('a').click(function() {
    if (!(this).hasClass('foo')) {
        // the clicked element doesn't have the foo class        
    }
    return false;
});
6 голосов
/ 28 ноября 2010

Вы также можете использовать селектор: not ().

$("#mydiv:not(.box)").click(function(){
    //do something
});

если у вас есть конкретные целевые элементы, например, вы хотите нацелиться на <li> внутри указанного контейнера, тогда это должно быть идеально:1005 *

$("#mydiv:not(.box)>li").click(function(){
    //do something
});

Это должно применять функцию click () только к дочернему элементу <li> контейнера, который не получил класс .box.

1 голос
/ 28 ноября 2010

Если вы ищете якоря, это должно сработать ...

$(":not(.box) a").click(function() {
  // your code here
});

Тем не менее, я бы посоветовал переформулировать вашу разметку, чтобы сделать это проще. Например, вы могли бы явно разместить класс clickable / notclickable на каждом элементе.

...