<div id="test"></div>
<script>
$(document).ready(function() {
alert($('#test').id);
});
</script>
¿Por qué no funciona lo anterior y cómo debo hacer esto?
jquery
jquery-selectors
Miedo de planetas
fuente
fuente
Respuestas:
La forma jQuery:
En tu ejemplo:
O a través del DOM:
o incluso :
y la razón detrás del uso de
$('#test').get(0)
JQuery o incluso$('#test')[0]
es que$('#test')
es un selector JQuery y devuelve una matriz () de resultados, no un solo elemento por su funcionalidad predeterminadauna alternativa para el selector DOM en jquery es
que es diferente
.attr()
y$('#test').prop('foo')
toma lafoo
propiedad DOM especificada , mientras que$('#test').attr('foo')
toma elfoo
atributo HTML especificado y puede encontrar más detalles sobre las diferencias aquí .fuente
$('#test').id()
.$('selector').attr('id')
devolverá la identificación del primer elemento coincidente. Referencia .Si su conjunto coincidente contiene más de un elemento, puede usar el
.each
iterador convencional para devolver una matriz que contenga cada uno de los identificadores:O, si está dispuesto a ponerse un poco más valiente, puede evitar el envoltorio y usar el
.map
atajo .fuente
retval.push($(this).attr('id'))
se puede escribirretval.push(this.id)
return $('.selector').map(function(i, dom){ return $(dom).attr('data-id'); })
id
es una propiedad de un htmlElement
. Sin embargo, cuando escribe$("#something")
, devuelve un objeto jQuery que envuelve los elementos DOM coincidentes. Para recuperar el primer elemento DOM coincidente, llame aget(0)
En este elemento nativo, puede llamar a id, o cualquier otra propiedad o función DOM nativa.
Esa es la razón por la cual
id
no funciona en su código.Alternativamente, use el
attr
método de jQuery ya que otras respuestas sugieren obtener elid
atributo del primer elemento coincidente.fuente
Las respuestas anteriores son geniales, pero a medida que evoluciona jquery ... también puede hacer:
fuente
attr()
se agregó en 1.0 yprop()
se agregó en 1.6, por lo que supongo que su comentarioprop()
es la nueva forma.attr
) o si es potencialmente modificada por script (prop
). Si no va a tener que modificar elid
atributo de cualquier elemento de uso de script del lado del cliente, a continuación,prop
yattr
son idénticos.Por supuesto, se requiere algún código de verificación, pero se implementa fácilmente.
fuente
.id
no es una función jquery válida. Debe usar la.attr()
función para acceder a los atributos que posee un elemento. Puedes usar.attr()
para cambiar un valor de atributo especificando dos parámetros u obtener el valor especificando uno.http://api.jquery.com/attr/
fuente
Si desea obtener una ID de un elemento, digamos por un selector de clase, cuando se disparó un evento (en este caso, un evento de clic) en ese elemento específico, entonces lo siguiente hará el trabajo:
fuente
$('#test').attr('id')
En tu ejemplo:fuente
Bueno, parece que no ha habido una solución y me gustaría proponer mi propia solución que es una expansión de los prototipos de JQuery. Puse esto en un archivo auxiliar que se carga después de la biblioteca JQuery, de ahí la verificación de
window.jQuery
Puede que no sea perfecto, pero es un comienzo para obtener la inclusión en la biblioteca JQuery.
Devuelve un solo valor de cadena o una matriz de valores de cadena. La matriz de valores de cadena es para el evento que se utilizó un selector de elementos múltiples.
fuente
$('#test')
devuelve un objeto jQuery, por lo que no puede usar simplementeobject.id
para obtener suId
necesita usar
$('#test').attr('id')
, que devuelve su requeridoID
del elementoEsto también se puede hacer de la siguiente manera,
$('#test').get(0).id
que es igual adocument.getElementById('test').id
fuente
$('#test')[0].id
que es lo mismo que.get(0)
Quizás útil para otros que encuentran este hilo. El siguiente código solo funcionará si ya usa jQuery. La función devuelve siempre un identificador. Si el elemento no tiene un identificador, la función genera el identificador y lo agrega al elemento.
Cómo utilizar:
fuente
Usando el código anterior, puede obtener la identificación.
fuente
Esta es una vieja pregunta, pero a partir de 2015 puede funcionar:
Y también puedes hacer tareas:
Siempre que defina el siguiente complemento JQuery:
Curiosamente, si
element
es un elemento DOM, entonces:fuente
Como el id es un atributo, puede obtenerlo utilizando el
attr
métodofuente
Esto puede ser id de elemento, clase o automáticamente usando incluso
fuente
Importante: si está creando un nuevo objeto con jQuery y vinculando un evento, DEBE usar prop y no attr , de esta manera:
$("<div/>",{ id: "yourId", class: "yourClass", html: "<span></span>" }).on("click", function(e) { alert($(this).prop("id")); }).appendTo("#something");
fuente
Esto finalmente resolverá tus problemas:
supongamos que tiene muchos botones en una página y desea cambiar uno de ellos con jQuery Ajax (o no ajax) dependiendo de su ID.
también digamos que tiene muchos tipos diferentes de botones (para formularios, para aprobación y para fines similares), y desea que jQuery trate solo los botones "me gusta".
aquí hay un código que funciona: jQuery tratará solo los botones que son de la clase .cls-hlpb, tomará la identificación del botón en el que se hizo clic y lo cambiará de acuerdo con los datos que provienen del ajax.
El código fue tomado de w3schools y cambiado.
fuente
fuente
no responde el OP, pero puede ser interesante para otros: puede acceder al
.id
campo en este caso:fuente