2012-04-18 19 views
11

Jestem nowym użytkownikiem jQuery i chciałbym zaktualizować identyfikator elementu. Moje podejście jest:jQuery element aktualizacji id

  1. wybrać ten element przez jego id

  2. nadpisać ten identyfikator z nową wartością.

Czy mógłbyś powiedzieć mi, gdzie jest mój błąd?

Dzięki!

Poniżej znajduje się kod 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

[Działa dla mnie] (http://jsfiddle.net/davidThomas/V2ZFf/) (Win XP/Chrome 18). –

+0

To działa dla mnie (http://jsfiddle.net/beardtwizzle/jqbb2/) w Chrome Canary – isNaN1247

+0

Czy masz więcej niż jeden element o tym samym identyfikatorze? Musisz również wprowadzić odpowiednią zmianę w atrybucie "for" etykiety. – nnnnnn

Odpowiedz

31

Tak, istnieje sposób na zmianę dowolnego atrybutu.

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

Potem znowu, to nie jest zdecydowanie zalecane i jest to również bardzo złą praktyką. Możesz jednak używać klas dla tej samej funkcjonalności.

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

Jeśli powiesz mi, co musisz zrobić, pomogę ci rozwiązać problem.

+0

Twój przykład '.attr()' jest taki sam, jak to, co OP miał w pytaniu. – nnnnnn

+0

Następnie problem jest gdzie indziej. Używa ścieżek względnych, aby dołączyć samą bibliotekę, więc włączenie może się nie powieść. –

+0

@AlexFl dzięki za udostępnienie tego rozwiązania klasy add. Czy mogę wiedzieć, dlaczego nie zaleca się zmiany nazw identyfikatorów? –

2

Osobiście czuję, jak fakt, że jQuery nie ma konkretnej metody setter dla identyfikatora jest bardzo celowe, bo ciebie nie powinno zmieniać identyfikatorów. Czy jest jakiś powód, dla którego nie używasz zajęć? jQuery ma wiele przydatnych funkcji i selektorów do zarządzania nimi w odniesieniu do elementu i mogą być używane zarówno jako unikalne identyfikatory i identyfikatory grup.

+2

Dlaczego nie powinieneś zmieniać identyfikatorów? Nawet przyjmując, że "nie powinieneś", faktem jest, że możesz _, więc jak to odpowiada na pytanie? – nnnnnn

+1

Odwiedzam strony z pytaniami i odpowiedziami od pewnego czasu. Jedną rzeczą, której się nauczyłem, jest to, że czasami najlepszą odpowiedzią jest "Zadajesz niewłaściwe pytanie". To powiedziawszy, nawet jeśli jest zdecydowany dalej używać identyfikatorów, ktoś inny może nie być. Stackoverflow ma być punktem odniesienia tak samo jak strona z pytaniami i odpowiedziami, a moja odpowiedź może być najlepszą odpowiedzią dla kogoś później. –

+2

Zgadzam się, że "zadajesz niewłaściwe pytanie" jest ogólnie poprawną odpowiedzią i że w takim przypadku może istnieć lepszy sposób na zrobienie tego, co jest podstawowym wymogiem. Z drugiej jednak strony kod, jak pokazano, powinien zadziałać, to znaczy, powinien zmienić identyfikator - powód, dla którego nie musi być spowodowany przez coś, co nie zostało pokazane. Sądzę więc, że to jest odpowiedź na to pytanie (z dodatkowymi punktami za sugerowanie lepszej alternatywy). – nnnnnn