2008-12-07 3 views
244

Мне нужно изменить идентификатор элемента с помощью 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.)

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

+5

В JavaScript, вы можете присвоить переменная (`foo = 1`), член объекта (` foo.bar = 2` или `foo ['bar'] = 2`) или индекс массива (` foo [0] = 3`), но присваивая выражению, как результат оператора (`(x + b) = 5`), или результат вызова функции (`foo() = 1`,` foo (x) .bar (y) = 7`) не имеет никакого смысла, так что определенно не будет того, как все работает в jQuery или любом другом Библиотека JavaScript. – rakslice 2013-08-19 18:05:59

ответ

441

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

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

Я думаю, что newId должен быть в кавычках – 2008-12-08 00:49:48

5

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

+0

Мне нужно использовать id как способ взломать существующую систему. никоим образом не вокруг ... – yoavf 2008-12-07 17:39:31

+2

радости унаследованных систем - тогда я понимаю вашу боль. Ответ Эрана определенно лучше всего. – 2008-12-07 19:44:18

+3

Фактически установка id - полезная и полезная задача, если вы создаете DOM с помощью скрытых шаблонов в HTML и затем клонируете их с помощью jquery. – 2011-08-02 08:40:55

39

Что вы имеете в виду, чтобы сделать это:

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

Это установит идентификатор нового ID

8

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

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

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

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

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

37

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

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

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

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

Это может быть сделано для всех целей. Просто добавьте перед тегом закрытие тега и не используйте для добавления Jquery.min.JS

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

, если вы хотите изменить старый идентификатор, то теперь показывают в примере

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

и Chage путем использования Java-скрипта

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

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

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

    }); 
</script> 
Смежные вопросы