2010-04-26 29 views
6

¿Por qué esto falla ...jQuery: ¿Cómo encontrar los elementos * * sin una cierta clase

$('div.contactAperson input').not('input.hadFocus').focus(function() { 
    $(this).attr('value', ''); 
}); 

... que está destinado a olfatear la entrada del que han no tiene la clase y luego .hadFocus cuando uno de esos subconjuntos recibe el enfoque, debe borrar el valor a nulo.

En este momento, los valores de entrada siempre se eliminan: la prueba .not ('input.hadFocus') no puede detener la ejecución.

Por cierto, que precede al código anterior es el siguiente código, que está trabajando muy bien:

$('div.contactAperson input').focus(function() { 
    $(this).addClass('hadFocus'); 
}); 

Gracias por cualquier inteligencia - vivas, -Alan

+0

Duplicado de: [¿Cómo puedo seleccionar todos los elementos sin una clase dada en jQuery?] (Http://stackoverflow.com/questions/2448051) – hippietrail

Respuesta

4
$('div.contactAperson > :input').not(':input.hadFocus').focus(function() { 
    $(this).attr('value', ''); 
}); 

buena suerte

+0

Tks, dunno ¿Por qué? Pero esta versión nunca borra el valor. Pero por la sugerencia del código, seguiré rascándome ... – Alan

5

Usted necesita el controlador para ejecutarse en función del estado actual del elemento - , no el estado en el que estaba enlazado. Probablemente necesite usar un enlace live.

Pruebe algo como esto:

$('div.contactAperson input:not(.hadFocus)').live('focus', function() { 
    $(this).attr('value', ''); 
}); 
+0

Gracias, parece que será eso. Ahora solo tengo que encontrar el proyecto relacionado. Saludos, Alan – Alan

Cuestiones relacionadas