2012-04-18 3 views
11

Я новичок в jQuery и хотел бы обновить идентификатор элемента. Мой подход:Элемент обновления jQuery id

  1. выбрать этот элемент по его идентификатору

  2. перезаписать этот идентификатор с новым значением.

не могли бы вы сказать мне, где моя ошибка?

Спасибо!

Ниже приведен 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

[Работает для меня] (http://jsfiddle.net/davidThomas/V2ZFf/) (Win XP/Chrome 18). –

+0

Это работает для меня (http://jsfiddle.net/beardtwizzle/jqbb2/) в Chrome Canary – isNaN1247

+0

У вас есть несколько элементов с одним и тем же идентификатором? Кроме того, вам необходимо внести соответствующее изменение в атрибут 'for' метки. – nnnnnn

ответ

31

Да, есть способ изменить любой атрибут.

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

Опять же, это определенно не рекомендуется, и это также довольно плохая практика. Однако вы можете использовать классы для той же функциональности.

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

Если вы скажете мне, что вам нужно сделать, я поможем вам с решением.

+0

Ваш пример '.attr()' тот же, что и у OP в вопросе. – nnnnnn

+0

Тогда проблема в другом месте. Он использует относительные пути, чтобы включить саму библиотеку, поэтому включение может завершиться неудачей. –

+0

@AlexFl благодарит за предоставление этого дополнительного решения класса. Могу ли я узнать, почему не рекомендуется менять имена имен? –

2

Лично я чувствую, как тот факт, что Jquery не имеет специфический метод установки для Id очень намеренным, потому что вы не следует менять идентификаторы. Есть ли причина, по которой вы не используете классы? В jQuery есть много полезных функций и селекторов для управления ими по отношению к элементу, и они могут использоваться как как уникальные идентификаторы, так и идентификаторы групп.

+2

Почему вы не должны менять идентификаторы? Даже принимая то, что вы «не должны», факт, вы _can_, так как это отвечает на вопрос? – nnnnnn

+1

Я уже некоторое время посещаю сайты Q & A, и одна вещь, которую я узнал, заключается в том, что иногда лучший ответ: «Вы задаете неправильный вопрос». Тем не менее, даже если он намерен продолжать использовать идентификаторы, кто-то другой может и не быть. Предполагается, что Stackoverflow является ссылкой, а также сайтом Q & A, и мой ответ может быть лучшим ответом для кого-то другого позже. –

+2

Я согласен с тем, что «вы задаете неправильный вопрос» является правильным ответом в целом и что в этом случае может быть лучший способ сделать все, что необходимо для основного требования. Но, с другой стороны, код, как показано, должен работать, то есть он должен изменить идентификатор - причина, по которой это не должно быть связано с чем-то, что не показано. Поэтому я предполагаю, что я говорю, что полный ответ будет касаться этого (с бонусами для подсказки лучшей альтернативы). – nnnnnn

Смежные вопросы