2012-04-18 12 views
11

Sono nuovo di jQuery e vorrei aggiornare l'id di un elemento. Il mio approccio è:jQuery update id elemento

  1. selezionare questo elemento per la sua id

  2. sovrascrivere questo ID con un nuovo valore.

ti dispiacerebbe dirmi dov'è il mio errore?

Grazie!

Di seguito si riporta il codice 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

[Works for me] (http://jsfiddle.net/davidThomas/V2ZFf/) (Win XP/Chrome 18). –

+0

Questo funziona per me (http://jsfiddle.net/beardtwizzle/jqbb2/) in Chrome Canary – isNaN1247

+0

Hai più di un elemento con lo stesso id? Inoltre, dovrai apportare una modifica corrispondente all'attributo 'for' dell'etichetta. – nnnnnn

risposta

31

Sì, c'è un modo per modificare qualsiasi attributo.

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

Quindi, di nuovo, questo non è assolutamente consigliato ed è anche una pratica piuttosto negativa. È tuttavia possibile utilizzare le classi per la stessa funzionalità.

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

Se mi dici cosa devi fare ti aiuterò con una soluzione.

+0

L'esempio '.attr()' è lo stesso di quello che l'OP aveva nella domanda. – nnnnnn

+0

Quindi il problema è da un'altra parte. Sta usando percorsi relativi, per includere la libreria stessa, quindi l'inclusione potrebbe fallire. –

+0

@AlexFl grazie per aver fornito questa soluzione di classe add. Posso sapere perché non è raccomandato cambiare i nomi di identificazione? –

2

Personalmente mi sento come il fatto che jQuery non dispone di un metodo setter specifica per l'identificazione è molto intenzionale perché si non dovrebbe cambiare ID in giro. C'è qualche ragione per cui non stai usando le lezioni? jQuery ha un sacco di utili funzioni e selettori per la gestione di quelli relativi ad un elemento e possono essere utilizzati sia come identificatori univoci che come identificativi di gruppo.

+2

Perché non dovresti cambiare ID in giro? Anche accettando che tu "non dovresti", il fatto sei tu _can_, quindi come risponde questa domanda? – nnnnnn

+1

Ho visitato siti di domande e risposte per un po 'di tempo e una cosa che ho imparato è che a volte la risposta migliore è "Stai facendo la domanda sbagliata". Detto questo, anche se è determinato a continuare a usare Ids, qualcun altro potrebbe non esserlo. Stackoverflow dovrebbe essere un riferimento tanto quanto un sito di domande e risposte e la mia risposta potrebbe essere la migliore risposta per qualcun altro in seguito. –

+2

Sono d'accordo che "Stai facendo la domanda sbagliata" è una risposta valida in generale, e che in questo caso potrebbe esserci un modo migliore per fare qualunque sia il requisito di base. Ma d'altra parte il codice come mostrato dovrebbe funzionare, cioè dovrebbe cambiare l'id - il motivo per cui non deve essere dovuto a qualcosa non mostrato. Quindi immagino che quello che sto dicendo è che una risposta completa dovrebbe rispondere a ciò (con punti bonus per suggerire un'alternativa migliore). – nnnnnn