Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Смена/переключение id у элемента (https://javascript.ru/forum/jquery/71169-smena-pereklyuchenie-id-u-ehlementa.html)

MC-XOBAHCK 30.10.2017 16:34

Смена/переключение id у элемента
 
Здравствуйте!
Подскажите как правильно решить такую задачку.
Имею элемент с id="da"
<div id="da">Содержимое</div>

На jQuery скрипт который меняет у элемента id при клике на него:
$('#da').click(function() {
	$('#da').removeAttr('id').attr('id', 'net');
});
$('#net').click(function() {
	$('#net').removeAttr('id').attr('id', 'da');
});

Получается как переключатель - меняет туда сюда id.
Но если при первом клике срабатывает правильно и id у элемента меняется с da на net, то при втором клике по элементу уже ничего не происходит.

laimas 30.10.2017 17:08

Цитата:

Сообщение от MC-XOBAHCK
$('#net').click(function() {

Такого элемента нет, и установление обработчика в никуда. Делегируйте обработку ближайшему родителю существующему на странице.

И странная однако затея - менять ID.

MC-XOBAHCK 30.10.2017 18:03

А при первом клике нельзя вместе с новым id установить для него обработчик? Есть ли такая возможность в jQuery или JS?

Я от странностей не отказываюсь, у меня только начинает понемногу что то получаться в коде и знаний у меня очень мало, поэтому я задаю на форуме вопрос.
ID менять - у меня там внутри ещё несколько div и в некоторых по клику я меняю часть контента (туда-сюда).
Альтернативный метод знаю - добавить в HTML новый div и менять у них .css('display', 'none') - .css('display', 'block')

laimas 30.10.2017 18:16

Цитата:

Сообщение от MC-XOBAHCK
ID менять - у меня там внутри ещё несколько div и в некоторых по клику я меняю часть контента (туда-сюда).

А разве для этого требуется менять имя атрибута?

Цитата:

Сообщение от MC-XOBAHCK
А при первом клике нельзя вместе с новым id установить для него обработчик?

Можно, но все таки лучше не стоит таким извращением заниматься - не надо ничего менять. Если сюда заглянет рони, он вам обязательно посоветует найти решение по волшебному слову - "открывашка". )

MC-XOBAHCK 30.10.2017 18:44

Цитата:

Сообщение от laimas (Сообщение 468654)
Можно, но все таки лучше не стоит таким извращением заниматься

А можете показать как правильно ставить обработчик, а то я прежде чем тему создать пробовал - у меня не получилось, а в топике застеснялся упоминать слово обработчик.
Я применять не буду, просто хотел бы знать как правильно обработчик устанавливать.

laimas 30.10.2017 19:49

Делегировать:

$('ближайший родитель гарантированно присутствующий на странице').on('событие или события через пробел', 'элемент или элементы через запятую, делегирующие обработку события', fucntion() { ...})

Но у вас то элементов не будет вообще.

MC-XOBAHCK 30.10.2017 20:50

Спасибо! - Сейчас попробую применить.
Я для своей задачки другое решение сделал, а это хочу понять как работает, для меня это лишним не будет.


Часовой пояс GMT +3, время: 20:53.