Скажем, у меня есть эта страница структурыКак я могу поменять два идентификатора между двумя элементами html?
<div id="line-value-container-1-1">
<button type="button" id="up_value_1_1">
<span class="icon-chevron-up"></span>
</button>
<button type="button" id="down_value_1_1">
<span class="icon-chevron-down"></span>
</button>
</div>
<div id="line-value-container-1-2">
<button type="button" id="up_value_1_2">
<span class="icon-chevron-up"></span>
</button>
<button type="button" id="down_value_1_2">
<span class="icon-chevron-down"></span>
</button>
</div>
<div id="line-value-container-1-3">
<button type="button" id="up_value_1_3">
<span class="icon-chevron-up"></span>
</button>
<button type="button" id="down_value_1_3">
<span class="icon-chevron-down"></span>
</button>
</div>
Let'say когда, например, при нажатии кнопки с идентификатором = «up_value_1_3» нажата, я хочу, чтобы переместить его родительский DIV вверх ONDE элемент поэтому пребывание перед тем DIV с ID = "строка-значение-контейнера-1-2", как это:
<div id="line-value-container-1-1">
<button type="button" id="up_value_1_1">
<span class="icon-chevron-up"></span>
</button>
<button type="button" id="down_value_1_1">
<span class="icon-chevron-down"></span>
</button>
</div>
<div id="line-value-container-1-3">
<button type="button" id="up_value_1_3">
<span class="icon-chevron-up"></span>
</button>
<button type="button" id="down_value_1_3">
<span class="icon-chevron-down"></span>
</button>
</div>
<div id="line-value-container-1-2">
<button type="button" id="up_value_1_2">
<span class="icon-chevron-up"></span>
</button>
<button type="button" id="down_value_1_2">
<span class="icon-chevron-down"></span>
</button>
</div>
Эта задача решается с Исли JQuery InsertBefore функции().
Теперь представьте, я хочу обменять идентификаторы между этим два переехали DIV-х, когда я говорю, например:
$("#line-value-container-1-2".attr('id', "#line-value-container-1-3");
$("#line-value-container-1-3".attr('id', "#line-value-container-1-2");
Этот простой обмен не работает, потому что после первого идентификатора изменения документа becames недопустимого HTML, потому что есть два элемента с одинаковым идентификатором, а второй оператор просто выбирает первый элемент с этим идентификатором, который является ранее измененным идентификатором.
Заключение Все изменения не изменяются. Как я могу решить эту проблему?
Не уверен, что вы пытаетесь для достижения здесь, но, возможно, подумайте об использовании библиотеки, такой как KnockoutJS, которая позаботится о рендеринг DOM для вас на основе модели просмотра JS. http://knockoutjs.com/ – Marc
Я не думаю, что, заменив id, позиция на самом деле изменится, 'insertBefore' и' insertAfter' намного опережают –