2013-09-05 5 views
2

с помощью jQuery Я хотел был бы изменить ID один из элементов внутри страницы, div и дать ему новый. I не может использовать классы, должен быть ID. Это будет частью оператора IF, например: (псевдо :)jQuery change div ID от x до y

если х = больше 1, изменение идентификатор х к у еще сделать ничего

До сих пор у меня есть:

$('#carriage-promo').attr('id','#carriage-promo-2'); 

Однако это не работает. Какие-либо предложения?

Я никогда не работал с идентификатором, всегда с классом, и я использовал бы и использовал addClass и removeClass, которые всегда работали для меня в прошлом!

+0

изменение # вагон-промо-2 на перевозку-промо-2 (снято #) и попробуйте –

+0

Получил все это сейчас - спасибо всем за отличные ответы. :-) – Myles

ответ

6
$('#carriage-promo').attr('id','#carriage-promo-2'); 

Нет необходимости в #. Так удалить его

$('#carriage-promo').attr('id','carriage-promo-2'); 

или вы можете использовать .prop()

$('#carriage-promo').prop('id','carriage-promo-2'); 

См выполнить тест, в jsperf

Вот пример Fiddle

+0

В этом случае вы бы использовали 'attr' или' prop'? Вы можете объяснить? – Archer

+0

@Archer Suure, возможности пункт. проверьте это http://jsperf.com/this-attr-id-vs-this-prop-id – Praveen

+1

@Archer http://api.jquery.com/prop/ Я не совсем понимаю разницу, однако, похоже, пропозиция работает, тогда как атр не сделал этого. – Myles

2

TRY

$('#carriage-promo').attr('id','carriage-promo-2'); 
+0

есть ли разница в вашем ответе от вышеприведенного? – Sachin

+0

@ Sachin Да .... Сроки написания ответа - разница .... –

+0

ohh :) хороший, но я не это имел в виду. Я просто хотел знать, почему вы пишете тот же самый ответ, который уже дал. – Sachin

1

Просто примените строку, которую вы хотите обновить.

$('#carriage-promo').attr('id','carriage-promo-2'); 

Почему, потому что '#' это выбрать элемент, с perticular Id

ID является DOM специфичны и # является Jquery специфичны.

1

Нет необходимости #, просто использовать ID:

$('#carriage-promo').attr('id','carriage-promo-2'); 

Лучше использовать prop(). Там были некоторые changes with attr() and prop() from Jquery v1.6 onwards:

$('#carriage-promo').prop('id','carriage-promo-2'); 

prop() для свойств и attr() для атрибутов.

+0

'.attr()' не амортизируется. Проверьте это http://stackoverflow.com/a/15070342/1671639 – Praveen

+0

Спасибо, что указали это. Я обновил свой ответ. –

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