Búsqueda de sitios web

javascript - ¿Cómo obtener un elemento DOM a partir de un selector de jQuery?


Me está resultando increíblemente difícil averiguar cómo obtener el DOMElement real a partir de un selector de jQuery.

Código de ejemplo:

<input type="checkbox" id="bob" />
var checkbox = $("#bob").click(function() { //some code  } )

y en otro fragmento de código estoy intentando determinar el valor marcado de la casilla de verificación.

  if ( checkbox.eq(0).SomeMethodToGetARealDomElement().checked )
    //do something.

Y por favor, no quiero hacer:

  if ( checkbox.eq(0).is(":checked"))
    //do something

Eso me evita el cuadro de selección, pero otras veces he necesitado el verdadero DOMElement.

Respuesta #1

Puedes acceder al elemento DOM en bruto con:

$("table").get(0);

o más simplemente:

$("table")[0];

Sin embargo, en realidad no necesitas mucho esto (según mi experiencia). Toma tu ejemplo de la casilla de verificación:

$(":checkbox").click(function() {
  if ($(this).is(":checked")) {
    // do stuff
  }
});

es más 'jquery' y (en mi opinión) más conciso. ¿Qué pasaría si quisieras numerarlos?

$(":checkbox").each(function(i, elem) {
  $(elem).data("index", i);
});
$(":checkbox").click(function() {
  if ($(this).is(":checked") && $(this).data("index") == 0) {
    // do stuff
  }
});

Algunas de estas características también ayudan a enmascarar las diferencias entre navegadores. Algunos atributos pueden ser diferentes. El ejemplo clásico son las llamadas AJAX. Hacer esto correctamente en Javascript puro tiene alrededor de 7 casos de respaldo para XmlHttpRequest.

Respuesta #2

Editar: parece que me equivoqué al suponer que no podías obtener el elemento. Como otros han publicado aquí, puedes obtenerlo con:

$('#element').get(0);

He verificado que esto realmente devuelve el elemento DOM que fue coincidente.

Artículos relacionados