2012-04-18 19 views
11

Soy nuevo en jQuery y me gustaría actualizar el ID de un elemento. Mi enfoque es:jQuery update element id

  1. seleccione este elemento por su ID

  2. sobrescribir este id con un nuevo valor.

¿Te importaría decirme dónde está mi error?

Gracias!

A continuación se muestra el código HTML:

<tr><th><label for="id_aerial_size_dist">Aerial size dist:</label></th><td><select name="aerial_size_dist" id="id_aerial_size_dist"> 
<option value="a">Very Fine to Fine</option> 
<option value="b">Fine to Medium (EFED Default)</option> 
<option value="c">Medium to Coarse</option> 
<option value="d">Coarse to Very Coarse</option> 
</select></td></tr> 

jQuery

<script type="text/javascript" src=" ../stylesheets/jQuery-1.7.2.js"></script> 

<script> 
$(document).ready(function() { 

    $('#id_aerial_size_dist').attr('id', 'id_a'); 

    }); 
</script> 
+0

[Funciona para mí] (http://jsfiddle.net/davidThomas/V2ZFf/) (Win XP/Chrome 18). –

+0

Esto funciona para mí (http://jsfiddle.net/beardtwizzle/jqbb2/) en Chrome Canary – isNaN1247

+0

¿Tiene más de un elemento con la misma identificación? Además, deberá hacer un cambio correspondiente al atributo 'for' de la etiqueta. – nnnnnn

Respuesta

31

Sí, hay una forma de cambiar cualquier atributo.

$('#your_element').attr('id','the_new_id'); 

Por otra parte, esto definitivamente no es recomendable y también es una práctica bastante mala. Sin embargo, puede usar clases para la misma funcionalidad.

$('.my_class').removeClass('my_class').addClass('normal_element'); 

Si me dices lo que tienes que hacer, te ayudaré con una solución.

+0

Su ejemplo '.attr()' es el mismo que el OP tenía en la pregunta. – nnnnnn

+0

Entonces el problema está en otro lado. Está usando rutas relativas, para incluir la biblioteca, por lo que la inclusión puede fallar. –

+0

@AlexFl gracias por proporcionar esta solución de clase adicional. ¿Puedo saber por qué no se recomienda cambiar los nombres de identificación? –

2

En lo personal me siento como el hecho de que jQuery no tiene un método de selección específico para la identificación es mucho intencional porque no debería estar cambiando Ids alrededor. ¿Hay alguna razón por la que no estés usando clases? jQuery tiene muchas funciones y selectores útiles para administrar aquellos con respecto a un elemento y se pueden usar como identificadores únicos e identificadores de grupo.

+2

¿Por qué no deberías cambiar las identificaciones? Incluso aceptando que "no debería", el hecho es que usted puede, ¿cómo responde esto a la pregunta? – nnnnnn

+1

He estado visitando sitios de preguntas y respuestas desde hace un tiempo y una cosa que aprendí es que a veces la mejor respuesta es "estás haciendo la pregunta incorrecta". Dicho eso, incluso si está decidido a seguir utilizando Ids, es posible que otra persona no lo esté. Se supone que Stackoverflow es una referencia tanto como un sitio de preguntas y respuestas, y mi respuesta puede ser la mejor respuesta para otra persona más adelante. –

+2

Acepto que "hace la pregunta incorrecta" es una respuesta válida en general, y que en este caso puede haber una mejor manera de hacer lo que sea que el requisito subyacente sea. Pero, por otro lado, el código como se muestra debería funcionar, es decir, debería cambiar el id. La razón por la que no debe ser debido a algo que no se muestra. Así que supongo que lo que estoy diciendo es que una respuesta completa abordaría eso (con puntos de bonificación por sugerir una mejor alternativa). – nnnnnn