Изменение идентификатора элемента с помощью 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.)
Edit
Я не могу использовать классы в этом случае, я должен использовать идентификаторы.
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 вместо этого? Я имею в виду, что идентификатор объекта, по моему мнению, должен быть статичным и специфичным для этого объекта. Если вы просто пытаетесь изменить его от показа на странице или что-то в этом роде, я бы поместил эти данные в класс, а затем добавил его к объекту, а не пытался изменить его идентификатор. Опять же, я говорю это, не понимая вашей подчеркивающей цели.
Если вы хотите поменять старый паспорт теперь покажите в Примере
<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>
ответ Эрана хорош, но я бы добавил к этому. Вам нужно следить за любой интерактивностью, которая не встроена в объект (то есть, если событие onclick вызывает функцию, оно все равно будет), но если к этому идентификатору присоединена обработка событий javascript или jQuery, она будет в основном оставлена:
$("#myId").on("click", function() {});если идентификатор теперь изменен на #myID123, функция, прикрепленная выше, больше не будет работать правильно из моего опыта.
<script> $(document).ready(function () { $('select').attr("id", "newId"); //direct descendant of a }); </script>Это может сделать для всех цели. Просто добавьте перед закрытием тега вашего тела и не для того, чтобы добавить Jquery.минута.js
Comments