2010-05-20 2 views
0

У меня возникла проблема с изменением атрибута для идентификатора, и я не могу понять, что я делаю неправильно. Я думаю, это не помогает, что я новичок в этом.Проблема с изменением атрибута с jquery

У меня есть функция, которая проверяет, чтобы я вытаскивал правильный идентификатор из строки в моей форме, которую я создал динамически. Это идет что-то вроде этого:

myFunction() { 
    var id = $(id).attr("id"); 
    alert("This is my id " + id); 
} 

Это работает без проблем и при нажатии кнопки, присвоенной предупредить меня о моем ид это даст мне идентификатор динамического ряда в моей форме. Вопрос теперь, когда я пытаюсь изменить идентификатор с этим:

changeId() { 
    var newId = $(id).attr("id", "x"); 
    alert("This is my new id " + newId); 
} 

Что происходит в этом случае является то, что он предупредит говоря: «Это мой новый идентификатор [объект Object]» вместо того, чтобы дать мне новый идентификатор , Какие-либо предложения? Я бы очень признателен за любую помощь в этом.

+1

Эти примеры кажутся неполными. Они не имеют ключевое слово 'function', а переменная' id' не определена. Также – RoToRa

ответ

5

.attr(attribute, value) возвращает объект JQuery снова (так что вы можете сохранить сцепление), если вы хотите, присвоенный ID, вам нужно сделать, это:

changeId() { 
    var newId = $(id).attr("id", "x").attr("id"); 
    alert("This is my new id " + newId); 
} 

Хотя прямой путь намного лучше , например:

changeId() { 
    var newId = "x" 
    $(id).attr("id", newId); 
    alert("This is my new id " + newId); 
} 
+0

+1 для этого. Приложил максимум усилий, чтобы написать, и вы даже взяли ссылку, но до сих пор удалось всего лишь на 3 секунды меньше :-) –

+2

Ник, почему вы забираете 'newId' в свой пересмотренный' changeId() '? Это будет иметь для меня гораздо больше смысла: 'changeId() {var newId = 'x'; $ (Идентификатор).attr ('id', newId); alert ('Это мой новый id' + newId); } ' –

+0

@Bears - +1 - Хорошая точка, это даже чище, обновлено. –

1

Вы устанавливаете и не получаете. Объект jQuery возвращается, когда вы используете .attr для установки атрибута - не того значения, которое вы его установили. Попробуйте:

changeId() { 
    $(id).attr("id", "x"); 
    var id = $(id).attr("id"); 
    alert("This is my new id " + newId); 
} 
1

attr(name, value) возвращает объект JQuery. Это необходимо для поддержки цепочки методов jQuery.

Вы хотите

changeId() { 
    // ------------------------------v method chaining! 
    var newId = $(id).attr("id", "x").attr("id"); 
    alert("This is my new id " + newId); 
} 

или просто

changeId() { 
    $(id).attr("id", "x"); 
    alert("This is my new id " + id.id); 
} 

Может быть, вы также можете найти более хорошее имя для переменной, чем id.

1

Выполнение .attr() с одним аргументом возвращает значение атрибута.

Выполнение .attr() с двумя аргументами возвращает объект jQuery, с которого он был вызван.

Docs: http://api.jquery.com/attr/

1

attr когда используется для установки атрибута возвращает исходный объект JQuery не новое значение атрибута.

1

Просто измените свойство id узла DOM. Работает во всех браузерах и не может быть проще:

var el = document.getElementById("your_id"); 
el.id = "new_id"; 
alert(el.id); 
Смежные вопросы