<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 lafoopropiedad DOM especificada , mientras que$('#test').attr('foo')toma elfooatributo 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
.eachiterador 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
.mapatajo .fuente
retval.push($(this).attr('id'))se puede escribirretval.push(this.id)return $('.selector').map(function(i, dom){ return $(dom).attr('data-id'); })ides 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
idno funciona en su código.Alternativamente, use el
attrmétodo de jQuery ya que otras respuestas sugieren obtener elidatributo 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 elidatributo de cualquier elemento de uso de script del lado del cliente, a continuación,propyattrson idénticos.Por supuesto, se requiere algún código de verificación, pero se implementa fácilmente.
fuente
.idno 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.jQueryPuede 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.idpara obtener suIdnecesita usar
$('#test').attr('id'), que devuelve su requeridoIDdel elementoEsto también se puede hacer de la siguiente manera,
$('#test').get(0).idque es igual adocument.getElementById('test').idfuente
$('#test')[0].idque 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
elementes un elemento DOM, entonces:fuente
Como el id es un atributo, puede obtenerlo utilizando el
attrmé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
.idcampo en este caso:fuente