2010-11-28 11 views
5

Estoy tratando de hacer esto pero no hay suerte hasta ahora, ¿alguien sabe cómo seleccionar un elemento en pero no incluir elementos en div específico como .box y todo el contenido en el interior que div .boxjquery al hacer clic seleccionar elemento si no está en la clase específica

pequeña actualización: gracias por las respuestas, pero si estoy usando :not o hasClass no va a asegurar que no se seleccionarán elementos en el interior que foo. como:

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

Respuesta

8

Se puede utilizar el método de hasClass():

$('a').click(function() { 
    if (!(this).hasClass('foo')) { 
     // the clicked element doesn't have the foo class   
    } 
    return false; 
}); 
+0

Funciona bien con esto! if (! domEl.closest ('div'). hasClass ('box')) – Dejan

+0

Simplemente no puedo conseguir que funcione con el diálogo jquery ui, supongo que es porque cómo se crean los diálogos, teniendo display: none, por lo No puedo usar &&! domEl.closest ('div'). hasClass ('ui-dialog') – Dejan

5

También puede utilizar el selector: no().

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

si tiene elementos específicos, como si desea orientar <li> dentro de su contenedor especificado, entonces esto debe ser ideal:

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

Esto sólo se debe aplicar la función click() a la <li> elemento hijo del contenedor que es no obtuvo la clase .box.

1

Suponiendo que está buscando anclas, esto debería funcionar ...

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

Sin embargo, sugeriría re-factorizar su margen de beneficio de hacer esto más fácil. Por ejemplo, podría colocar explícitamente una clase cliqueable/no elegible en cada elemento.

Cuestiones relacionadas