Изменение идентификатора элемента с помощью jQuery

мне нужно изменить идентификатор элемента с помощью jQuery.

по-видимому, это не работает:

jQuery(this).prev("li").attr("id")="newid"
jQuery(this).prev("li")="newid"

я узнал, что могу сделать это со следующим кодом:

jQuery(this).prev("li")show(function() {
    this.id="newid";
});

но мне это кажется неправильным. Должен быть лучший способ, нет? Кроме того, если нет, какой другой метод я могу использовать вместо show/hide или других эффектов? Очевидно, я не хочу показывать/скрывать или влиять на элемент каждый раз, просто чтобы изменить его ИДЕНТИФИКАТОР.

(Да, я новичок jQuery.)

редактировать
В этом случае я не могу использовать классы, я должен использовать IDs.

9 ответов


ваш синтаксис неправильный, вы должны передать значение в качестве второго параметра:

jQuery(this).prev("li").attr("id","newId");

предпочтительный вариант над .attr использовать .prop вот так:

$(this).prev('li').prop('id', 'newId');

.attr возвращает атрибут элемента, тогда как .prop извлекает свойство, на которое ссылается атрибут (т. е. то, что вы на самом деле намереваясь изменить)


то, что вы хотите сделать, это:

jQuery(this).prev("li").attr("id", "newID");

это установит ID в новый ID


Я сделал что-то подобное с этой конструкции

$('li').each(function(){
  if(this.id){
    this.id = this.id+"something";
  }
});

Я не уверен, какова ваша цель, но может быть лучше использовать addClass вместо этого? Я имею в виду, что идентификатор объектов, на мой взгляд, должен быть статичным и специфичным для этого объекта. Если вы просто пытаетесь изменить его от показа на странице или что-то в этом роде, я бы поместил эти данные в класс, а затем добавил его к объекту, а не пытался изменить его идентификатор. Опять же, я говорю это, не понимая вашей основной цели.


Если вы хотите изменить старый id, то теперь покажите в Примере

<label id="myOldId">Change id....</label>

и chage с помощью java-script

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

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

    $('#myOldId').attr('id', 'newID');

    });
</script>

$("#LeNomDeMaBaliseID").prop('id', 'LeNouveauNomDeMaBaliseID');

ответ Эрана хорош, но я бы добавил к этому. Вам нужно следить за любой интерактивностью, которая не встроена в объект (то есть, если событие onclick вызывает функцию, оно все равно будет), но если к этому идентификатору прикреплена обработка событий javascript или jQuery, она будет в основном заброшена:

$("#myId").on("click", function() {});

если идентификатор теперь изменен на #myID123, функция, прикрепленная выше, больше не будет работать правильно из моего опыта.


<script>
       $(document).ready(function () {
           $('select').attr("id", "newId"); //direct descendant of a
       });
</script>

Это может сделать для всех цели. Просто добавьте перед закрытием тега вашего тела и не добавляйте С помощью jQuery.минута.js