2011-02-25 8 views
9

¿Tiene jQuery alguna función para determinar el tipo de etiqueta de los elementos DOM a los que hace referencia el objeto jQuery? Estoy escribiendo un plugin de jQuery y ...¿Tiene jQuery alguna función para determinar el tipo de etiqueta de los elementos DOM referenciados por el objeto jQuery?

jQuery.fn.myPlugin() { 
    return this.each(function() { 
     var $this = $(this); 
     // <---------------------------------------HERE! 
    }); 
} 

me gustaría saber si es un elemento this<input> o un elemento <div>, sin necesidad de utilizar directamente el DOM.

Respuesta

8

Haga lo siguiente:

this.nodeName; 

... o para estar seguro, lo convierten en un caso específico:

this.nodeName.toLowerCase(); 

La propiedad nodeName es una propiedad que es widely supported y le dará la nombre de etiqueta en el caso de un nodo de elemento (como en su caso).

+1

Gran enlace de por qué 'nodeName' es mejor que' tagName'. –

+0

@ Box9: Iba a pegar esa nota de quirksmode sobre 'tagName' en la respuesta, pero pensé que simplemente lo dejaría en su lugar. Pero sí, nodeName es el camino a seguir. : o) – user113716

3

Por qué no usar directamente el DOM? Ya que tienes un objeto DOM ya a mano en this, yo diría que simplemente úsalo. Si sólo se tenía el objeto jQuery que podría hacer:

$this.attr("tagName") == "DIV" 

o

$this.is("div") 

Pero no hay necesidad de eso.

+0

Diría que poder acceder a 'tagName' a través de' attr' es un efecto secundario de jQuery que elimina la distinción entre propiedades y atributos, y no se debe confiar en ellos. – Anurag

0

aplicar el método prop("tagName") para obtener el nombre de etiqueta del elemento html, por ejemplo:

$this.prop("tagName"); 
Cuestiones relacionadas