Estoy buscando una manera de seleccionar todos los elementos en una página, excepto aquellos con una ubicación DOM específica. Aquí hay un ejemplo de lo que me gustaría hacer:

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

¿Es esto posible en una forma "nativa jQuery"?

19
Dang 23 sep. 2009 a las 20:41

4 respuestas

La mejor respuesta

Desea utilizar el selector :not():

jQuery(":not(.ignore)").bind("click", function(e) { ... });
30
Andrew Hare 23 sep. 2009 a las 16:48

Por otro lado, hacer algo a cada elemento de una página simultáneamente es desagradable. Hay una mejor manera Recomendaría unir al cuerpo y luego ignorar los clics en algunos elementos:

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

... O usando jQuery 1.3's .live(), que hace esto por usted:

 $(":not(.ignore)").live(function(e){
    ...
});
2
s4y 23 sep. 2009 a las 16:57

jQuery not-selector al rescate!

$('*:not(.ignore)').bind('click', function(e) { ... });
8
Matt Ball 23 sep. 2009 a las 16:43

Otra forma, si ya tiene selectores para ambos:

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

Además, más filtros.

24
orip 23 sep. 2009 a las 16:55