2011-01-31 5 views

Respuesta

75
if(!$(el).is("select")) { 
    // the input field is not a select 
} 
+0

que funciona, ¡gracias! – Alex

+7

¡Recuerde marcar la respuesta! (¡No es que Darin necesite más puntos!) –

+0

¿Por qué el original no funcionó? Parece que debería de un vistazo ... Tu respuesta parece moverse un poco por la negación un poco ... Veo la respuesta en las respuestas de otras personas. Posiblemente sea una buena idea editarlo en esta, ya que esta es la respuesta aceptada, por lo que realmente debería ser la única que la gente necesita mirar (en mi humilde opinión). :) – Chris

3

$(el).not("select") le da matriz. Array siempre da true en expresiones booleanas. Pero después de aplicar no, esta matriz de elementos no contendrá selecciones. Ver trabajando example.

+0

pero solo necesito un valor verdadero/falso, no una matriz. ¿Cómo puedo obtener eso? – Alex

2

El método .not() devuelve un nuevo objeto jQuery con todo, desde el objeto original que no coincide con el selector.
No puede simplemente usarlo en una declaración if como esa.

En su lugar, utiliza el método .is, que comprueba si el elemento coincide con un selector y devuelve un valor booleano.

if (!$(el).is('select')) 
1

Lo que trata de dar la <select> etiquetas de una clase:

$(el+":not('.select')")

^_^

+0

Eso no funcionará a menos que 'el' sea una cadena, lo cual probablemente no sea así. Además, él quiere un booleano. – SLaks

+1

@SLaks: ¿Él? ¿Estás seguro? –

+0

gosh - es suficiente para hacerte gay –

1
if($(el).selectedIndex) 

Si tiene una propiedad SelectedIndex, es una <SELECT>

+0

Para firefox esto estaba contando como falso si no se seleccionaba nada. – Royalty

2
if ($(el)[0].nodeName != 'select') 
Cuestiones relacionadas