2010-02-24 9 views
14

¿Cómo puedo obtener jQuery para devolver los elementos de DOM nativos que encapsula?Recuperando elementos DOM nativos de objetos jQuery?

+1

¿Qué más haría con los selectores jQuery además de "manipular elementos"? Quiero decir, tu pregunta parece básicamente, "¿Puedo usar jQuery?" a lo que la respuesta sería "sí". – Pointy

+0

¿Por qué quieres hacer esto? Y no, su expresión no funcionará, ya que $ ("cheese_tag") devolverá un objeto jQuery. – alexn

+0

Disculpe, una forma mejor de expresar mi pregunta sería "¿Puedo convertir objetos de jQuery a los que normalmente puede manipular javascript?" como en get jQuery para devolver un objeto javascript para su manipulación. – mattsven

Respuesta

28

Cuando encuentre elementos con jQuery, se puede conseguir con la función de "obtener":

var regularElement = $('#myElementId').get(0); 

Dentro de una ".Cada()" función, el puntero 'this' se refiere a un 'verdadero' elemento:

$('input.special').each(function() { 
    var type = this.type; 
    this.value = "exploding balloon"; 
    // etc 
}) 

El uso de jQuery no hace que Javascript sea "diferente". Es es Javascript, y el DOM sigue siendo el DOM.

+1

Me tomó un minuto entender por qué estaba usando la función get() en el objeto jquery, pero luego leí los comentarios sobre la pregunta en sí. Tiene sentido ahora. Veo que get() es útil cuando se integra con JavaScript no jQuery. –

+0

Aaaaand '$ ('# myElementId') [0]' funciona también. – mattsven

2

$('myTag').get(0) devuelve el elemento HTML.

0

Supongo que está tratando de verificar si su objeto jQuery es la primera instancia de "cheese_tag". Puede encontrar la primera etiqueta con el selector :first y luego no tendrá que hacer la comparación. Por ejemplo, obtenga la primera etiqueta div que sería: $('div:first').

Para obtener la lista completa de selectores de jQuery, consulte el documentation.

+0

No exactamente ... Quería obtener un objeto de elemento HTML de JavaScript como devolución. – mattsven

0

Otras personas ya han respondido directamente la pregunta. Usa el método get().

Sin embargo, la mayoría de las veces usted quiere usar métodos jQuery para hacer la manipulación en lugar de tener acceso al elemento DOM sin procesar y luego modificarlo usando el JavaScript "estándar".

Por ejemplo, con jQuery puedes decir $ ('mySelector'). AddClass ('myClass') para agregar una clase CSS a un elemento DOM. Esto es mucho más complicado (y específico del navegador) usando la manipulación DOM directa. Este concepto se extiende a casi todas las demás manipulaciones DOM que quisieras hacer.

2

jQuery utiliza el Sizzle Selector Engine *. Puedes usarlo solo.

* Confirmado por Doug Neiner, que significa que es justo;)

+1

¡Correcto! Simplemente incluya sizzle.js, luego agregue esta línea: 'window. $ = Window.Sizzle'. Y '$ (" cheese_tag ")' devolverá '[]'. '$ (" # cheese_id ") [0] === document.getElementById (" cheese_id ")' –

+0

¿Qué, no, "soy Doug Neiner y apruebo esta respuesta"? Jeje. – Sampson

+3

Soy Doug Neiner y apruebo esta respuesta –

0

Un objeto jQuery es una envoltura array-como alrededor de uno o más elementos de DOM. Para obtener una referencia a los elementos DOM reales (en lugar del objeto jQuery), tiene dos opciones. La primera (y más rápido) método es utilizar la notación de matriz:

$("#foo")[ 0 ]; // Equivalent to document.getElementById("foo") 

El segundo método es utilizar la función .get():

$("#foo").get(0); // Identical to above, only slower. 

También puede llamar .get() sin ningún argumento para recuperar una verdadera matriz de elementos DOM.

+0

No sabía que podía llamar simplemente 'get()' para una matriz. Bonito. – mattsven

Cuestiones relacionadas