Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JQuery После клонирования по id обращение к элементам клона (https://javascript.ru/forum/misc/28894-jquery-posle-klonirovaniya-po-id-obrashhenie-k-ehlementam-klona.html)

mirek 06.06.2012 15:30

JQuery После клонирования по id обращение к элементам клона
 
После клонирования по id происходит обращение к элементам клона, а не родителя

$("#div_id").clone(true).appendTo("#clone1").attr( "id", "Clone1");

А мне нужно в клоне только сохранить оригинал.

При том я даже изменяю id главного элемента как видно из строки

Что не так ? Или так и должно быть ?


Может необходимо изменять id всех подэлементов клона ?

А не предусмотрена ли в JQuery возможность копирования ?

Deff 06.06.2012 15:42

mirek,
true - уберите - тогда не будут копировацо события
$("#div_id").clone().appendTo("#clone1").attr( "id", "Clone1");

mirek 06.06.2012 15:56

Цитата:

Сообщение от Deff
true - уберите

Я убрал true. Но все равно тогда при записывании картинки по определенному id происходит ее запись в клон, а не оригинал

Конкретно картинка записывается при помощи appendChild javascript-ом

Я подумал, а что если не использовать метод clone JQuery, а просто копировать div при помощи innerHTML

Тогда в последующем можно будет восстановить этот div с событиями из HTML ?

melky 06.06.2012 16:20

Если бы вы сделали маленький запускаемый пример HTML, то это бы ответило на многие вопросы.

Я, к примеру, не понял проблемы.

Цитата:

Сообщение от mirek
Тогда в последующем можно будет восстановить этот div с событиями из HTML ?

нет.

Deff 06.06.2012 16:24

melky, Наверно тогда через исп-ть обратный вызов. $("#Y").replaceWith()

mirek 06.06.2012 19:55

Пример очень простой
Но с использованием JQuery. Поэтому я думаю не заработает
<div id="clone" style="font-size:10px;"></div> 

<div id="img_id">
<div id="ne">
	<img id="main_img" src="" width="350" height="300" />
	<div id="wrapper">
            <div id="able">
   	    </div>
     	</div>
       
	</div>

$("#img_id").clone().appendTo("#clone");


После выполнения $("#img_id").clone().appendTo("#clone");

Инструкция document.getElementById("img_id").src = "src" присваивает путь к файлу клону, а не оригиналу
Соответственно картинка отображается в div id="clone", а не div id="img_id"

Deff 06.06.2012 20:09

Цитата:

Сообщение от mirek
Инструкция document.getElementById("img_id").src = "src" присваивает путь к файлу клону, а не оригиналу

:yes: Нарисуйте инструкцию и HTML исходника для clone - может стоить менять id для img и нафига переходить из jQuery в чистый ява; и почему не делать через класс img(не через id) на parent() (* или parens()

melky 06.06.2012 20:15

$("#img_id").clone().removeAttr("id").appendTo("#clone");

mirek 06.06.2012 22:37

Цитата:

Сообщение от melky
$("#img_id").clone().removeAttr("id").appendTo("#c lone");

Проблема в том, что в дальнейшем требуется восстановление оригинала из клона

Я например сейчас попробовал еще делать приблизительно похожее

Сразу же после appendTo изменял id всех элементов

Сложности возникают при попытке восстановить сохраненный таким способом div с сохранением всех его свойств

beard 07.06.2012 01:28

<div id="clone" style="font-size:10px;"></div> 

<div id="img_id">
<div id="ne">
	<img id="main_img" src="" width="350" height="300" />
	<div id="wrapper">
            <div id="able">
   	    </div>
     	</div>
       
	</div>

$(".img_id").clone().attr("id", "clone_image").appendTo("#clone");
document.getElementById("clone_i mage").src = "src"

После клона появляется два элемента #img_id, соответственно document.getElementById("img_id") берет первый.


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