2009-09-23 4 views
18

Я ищу способ, чтобы выбрать все элементы на странице, за исключением тех, с заданной DOM место .. Вот пример того, что я хотел бы сделать:jQuery: Целевой все, кроме ___?

jQuery('*').except('.ignore').bind('click', function(e) { ... }); 

Возможно ли это в «родной jQuery»?

ответ

30

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

jQuery(":not(.ignore)").bind("click", function(e) { ... }); 
+0

Ах, я думаю звездочку в моей пример, вероятно, избыточный. –

+0

Да, это - этот пример работает со звездочкой или без нее. –

+1

Теперь, глядя на него, я думаю, что предпочитаю без звездочки. –

23

Другой способ, если у вас уже есть селекторы для обоих:

$('.foo').not('.ignore').bind(...); 

Кроме того, more filters.

2

С другой стороны, что-то делать с каждым элементом на странице одновременно является неприятным. Есть лучший способ. Я бы рекомендовал обязательные к телу затем игнорируя клики на некоторых элементах:

$(document.body).click(function(e){ 
    if($target.closest('.ignore').length) return true; 
    ... 
}); 

... Или с помощью JQuery 1.3'S .live(), который делает это для вас:

$(":not(.ignore)").live(function(e){ 
    ... 
}); 
Смежные вопросы