Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 01.09.2011, 00:56
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

в jquery обработчики событий для этого элемента сохраняются, если использовать detach
Ответить с цитированием
  #12 (permalink)  
Старый 01.09.2011, 00:59
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от melky
а как же атрибуты, обработчики событий ?
appendChild и insertBefore перемещают элементы, если те уже находятся в дереве
Ответить с цитированием
  #13 (permalink)  
Старый 01.09.2011, 01:36
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

appendChild перемещает элемент, а не создает новый, поэтому все обработчики и атрибуты никуда не пропадают, элемент-то все тот же, просто на новом месте. Демонстрация:
<style>
.label {clear: both; font-family: Verdana; font-size: 12px;}
#test {width: 15px; height: 15px; background-color: darkseagreen; border: 1px #444 solid;}
.cont {width: 50px; height: 50px; border: 1px #555 solid; margin: 10px 10px 0 0; float: left; padding: 5px;}
.cont1 {background-color: #ddd;}
.cont2 {background-color: #ddd;}
</style>

<div class="label">Click on the green square.</div>

<div id="cont1" class="cont cont1">
    <div id="test" title="Click me!"></div>
</div>
<div id="cont2" class="cont cont2"></div>

<script>
document.getElementById('test').addEventListener('click', function() {
    var newParent = this.parentNode.id == 'cont1' ? 'cont2' : 'cont1';
    document.getElementById(newParent).appendChild(this);
}, false);
</script>

Последний раз редактировалось ваый, 01.09.2011 в 01:41.
Ответить с цитированием
  #14 (permalink)  
Старый 01.09.2011, 01:38
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,588

Сообщение от melky Посмотреть сообщение
а как же атрибуты, обработчики событий ?
В том то и фишка.
<style>
p{text-align:center;height:25px;margin:0;border:1px solid #000}
</style>
<div id="hover">
<p><input type="button" value="recolor"></p>
<p></p>
<p></p>
<p></p>
<p></p>
</div>
<script>
var input = document.getElementsByTagName('input')[0];
document.getElementById('hover').onmouseover = function(e){
  var t=e?e.target:window.event.srcElement;
  if(t.tagName=='P'&&!t.firstChild)t.appendChild(input);
}
input.onclick = function(){this.parentNode.style.backgroundColor = 'rgb('+Math.floor(Math.random()*256)+',0,0)'}
</script>

Т.е. можнро навешивать обработчики без привязки к конкретному элементу. Хотя это и черевато.)
__________________
29375, 35
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск элементов в DOM Bebarr Swallow Общие вопросы Javascript 1 24.06.2011 14:57
Перемещение элементов Johny Общие вопросы Javascript 6 29.03.2011 14:01
Перебор DOM элементов DjDiablo jQuery 3 04.02.2011 16:26
DOM, определение стиля элементов Maximor17 Общие вопросы Javascript 3 04.11.2010 16:24
Запрет на перемещение элементов html Ilyan (X)HTML/CSS 2 26.03.2010 10:21