javascript - obtener - jquery selector id
Cambiando la ID de un elemento con jQuery (9)
Hice algo similar con este constructo.
$(''li'').each(function(){
if(this.id){
this.id = this.id+"something";
}
});
Necesito cambiar la ID de un elemento usando jQuery.
Al parecer estos no funcionan:
jQuery(this).prev("li").attr("id")="newid"
jQuery(this).prev("li")="newid"
Descubrí que puedo hacer que suceda con el siguiente código:
jQuery(this).prev("li")show(function() {
this.id="newid";
});
Pero eso no me parece correcto. Debe haber una mejor manera, no? Además, en caso de que no lo haya, ¿qué otro método puedo usar en lugar de mostrar / ocultar u otros efectos? Obviamente no quiero mostrar / ocultar o afectar el elemento cada vez, solo para cambiar su ID.
(Sí, soy un novato jQuery.)
Editar
No puedo usar clases en este caso, debo usar IDs.
La respuesta de Eran es buena, pero yo añadiría eso. Debe observar cualquier interactividad que no esté en línea con el objeto (es decir, si un evento onclick llama a una función, todavía lo hará), pero si hay algún manejo de eventos javascript o jQuery adjunto a esa ID, básicamente se abandonará :
$("#myId").on("click", function() {});
Si la ID ahora se cambia a # myID123, la función adjunta anteriormente ya no funcionará correctamente desde mi experiencia.
Lo que quieres hacer es:
jQuery(this).prev("li").attr("id", "newID");
Eso establecerá la ID a la nueva ID
No estoy seguro de cuál es su objetivo, pero, ¿podría ser mejor usar addClass en su lugar? Me refiero a una ID de objetos en mi opinión debe ser estática y específica para ese objeto. Si solo está tratando de evitar que se muestre en la página o algo así, pondría esos detalles en una clase y luego los agregaría al objeto en lugar de intentar cambiar su ID. Una vez más, estoy diciendo que sin entender su objetivo de subrayado.
Si desea cambiar la ID antigua, ahora muestre un ejemplo.
<label id="myOldId">Change id....</label>
y chage por el uso de java-script
<script type="text/javascript" src="jQuery-1.7.2.js"></script>
<script>
$(document).ready(function() {
$(''#myOldId'').attr(''id'', ''newID'');
});
</script>
Su sintaxis es incorrecta, debe pasar el valor como segundo parámetro:
jQuery(this).prev("li").attr("id","newId");
Una OPCIÓN PREFERIDA sobre .attr
es usar .prop
así:
$(this).prev(''li'').prop(''id'', ''newId'');
.attr
recupera el atributo del elemento, mientras que .prop
recupera la propiedad a la que hace referencia el atributo (es decir, lo que realmente intenta modificar)
$("#LeNomDeMaBaliseID").prop(''id'', ''LeNouveauNomDeMaBaliseID'');
<script>
$(document).ready(function () {
$(''select'').attr("id", "newId"); //direct descendant of a
});
</script>
Esto podría hacer para todos los efectos. Solo agregue antes de la etiqueta de cierre de su cuerpo y no agregue Jquery.min.js