Тема: append в jQuery
Показать сообщение отдельно
  #2 (permalink)  
Старый 12.10.2012, 22:41
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Shitbox2
Или существующие объекты не затрагиваются?
расследование и ответ снизу.

да. они просто перемещаются :

<div id="from" style="border: 1px red solid;">  <div id="target">FOOBAR</div> </div>
<div id="to" style="border: 1px green solid;"></div>

<script>
// сокращение
var $ = document.getElementById.bind(document);

// добавим какое-нибудь свойство к элементу :
$("target").myprop = "myvalue";

// по клику будем выводить значение этого свойства :
$("target").addEventListener("click", function (e) {
    alert( 'Значение свойства "myprop" :  ' + this.myprop);
});

// теперь переместим элемент в другой элемент.
$("to").appendChild( $("target") );
</script>


А вот что происходит с элементом, если его appendChild'ят в то же место, где он находится - вопрос.

Попробую полазить щас в исходниках V8 ... самому интересно стало

Node.appendChild отсылает нас к ContainerNode::appendCild, где после проверок на возможность вставки \ перемещения элемента (можем ли мы манипулировать вообще с ним) происходит проверка на то, одинаков ли this и цель вставки ( т.е. пытаемся ли мы вставить элемент сам в себя), всё-таки он вынимается из дерева и вставляется в родитель.

т.е. они каждый раз вынимаются из дерева, и вставляются на то же место.

это ненужная операция, которой нужно избегать.

Последний раз редактировалось melky, 12.10.2012 в 23:04.
Ответить с цитированием