Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Копирование DIV и изменение id (https://javascript.ru/forum/jquery/55122-kopirovanie-div-i-izmenenie-id.html)

SKLNSK 14.04.2015 18:22

Копирование DIV и изменение id
 
Допустим копирую div со всеми вложенными тегами.

$("#"+id_copy).clone().appendTo("#"+id_last);

Только при копировании выходит, что копия полностью идентичная. ID элементов такие же.

Каким образом эффективнее обойти и изменить все id элементов скопированного объекта (div с вложениями)?

SKLNSK 14.04.2015 18:30

Если делаю так, то только у верхнего уровня переименовывается id

$("#"+id_copy).clone().appendTo("#"+id_last).
							function()
							{
					$("#"+this.id).attr("id","id"+Math.floor((Math.random()*1000)));
							}

рони 14.04.2015 18:30

SKLNSK,
а нельзя не использовать id совсем -- а вычислять по классу и расположению?

рони 14.04.2015 18:44

Смена всех id у клона
 
SKLNSK,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
     $.fn.idPlus = function () {
       $('*',this).add(this).each(function (index, self) {
        self.id && (self.id += Math.floor((Math.random()*1000)))
    })
    return this
}

     $(function(){
      var id_copy = 'first', id_last = 'last';
      $("#"+id_copy).clone().idPlus().appendTo("#"+id_last);
     alert($("#"+id_last).html())
});


  </script>
</head>

<body>
<div id='first'>
<span id='info'>Информация</span>
<div id='main'>
<span id='show'>текст1<b>test</b></span>
</div>
</div>
<div id='last'>

</div>

SKLNSK 14.04.2015 18:55

Цитата:

Сообщение от рони (Сообщение 366641)
SKLNSK,
а нельзя не использовать id совсем -- а вычислять по классу и расположению?

я как понимаю без id не получится, если мне в будущем понадобится обращаться к данному объекту, например перемещать или менять цвет и текст

рони 14.04.2015 19:05

Цитата:

Сообщение от SKLNSK
например перемещать или менять цвет и текст

всё это можно сделать без id

SKLNSK 14.04.2015 19:12

Цитата:

Сообщение от рони (Сообщение 366642)
SKLNSK,
...............

</div>[/html]

Да то что надо, спасибо! Переименовывает (меняет id) даже вложенные элементы.

Не до конца пока разобрался как работает. Вроде как понимаю должна быть рекурсия, но в коде не вижу рекурсии.

SKLNSK 14.04.2015 19:14

Цитата:

Сообщение от рони (Сообщение 366644)
всё это можно сделать без id

А как если не секрет? я специально делаю id, чтобы менять свойства выделенного объекта.


рони 14.04.2015 19:28

Цитата:

Сообщение от SKLNSK
например перемещать или менять цвет и текст

сохраните ссылку на обьект и даже класс не понадобится в дальнейшем
var divclone = $("#"+id_copy).clone().idPlus().appendTo("#"+id_last);
divclone.height(45)


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