2008-09-23 25 views

Respuesta

20

jQuery comprueba la propiedad nodeType. Entonces usted tendría:

var overloaded = function (arg) { 
    if (arg.nodeType) { 
     // Code for DOM Element argument... 
    } 
}; 

Aunque esto detectaría todos los objetos DOM, no solo los elementos. Si desea que los elementos solos, eso sería:

var overloaded = function (arg) { 
    if (arg.nodeType && arg.nodeType == 1) { 
     // Code for DOM Element argument... 
    } 
}; 
+0

Genial, si es lo suficientemente bueno para jQuery, debería estar bien para mis necesidades. ¡Gracias! –

4

Probablemente éste aquí:

node instanceof HTMLElement 

que debería funcionar en la mayoría de los navegadores. De lo contrario, tiene que escribirlo en forma de pato (por ejemplo, typeof x.nodeType != 'undefined')

+1

'HTMLElement' como una función constructora no se define para ser accesible por cualquier estándar, y no lo es, en el IE antes de la versión 8. – bobince

+1

@bobince: HTMLElement se define en DOM nivel 2. Que IE7 y versiones anteriores no son compatibles no significa que no esté estandarizado. La razón por la que no debes usar 'instanceof' es porque no funcionará si estás haciendo un desarrollo de fotogramas cruzados. –

+0

En realidad, el hecho de que no funcione con fotogramas puede incluso ser una ventaja en algunos casos: normalmente, los nodos extraños necesitan un tratamiento especial (es decir, importación), por lo que no pueden usar la misma ruta de código que los nodos locales. –

0

¿Qué hay de

obj instanceof HTMLElement 
+1

No estoy seguro de por qué esto fue downvoted alguna vez sin explicación, pero esto también funciona y parece más confiable que un número mágico. –

+3

Esta respuesta es completamente redundante ya que Armin publicó lo mismo antes, y como indica el comentario de Bobince sobre esa respuesta, esto no es confiable. Mi respuesta no es poco confiable, ese "número mágico" está [definido en la especificación] (http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-1950641247). – Jim

+1

Esto no funciona en Chrome ya que HTMLElement es una función allí – bjornl

Cuestiones relacionadas