Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 05.09.2016, 19:40
Аспирант
Отправить личное сообщение для moron Посмотреть профиль Найти все сообщения от moron
 
Регистрация: 29.07.2012
Сообщений: 49

Если они действительно есть в dom, то как ты обьяснишь, что у $a после innerHTML пропадает родитель?
console.log($a.eq(0).parent().prop("tagName"))
Ответить с цитированием
  #12 (permalink)  
Старый 05.09.2016, 19:40
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

По ссылке, видимо вопрос этого касается или я не понимаю о чем спрашивают.
Ответить с цитированием
  #13 (permalink)  
Старый 05.09.2016, 19:41
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от moron
что у $a после innerHTML пропадает родитель?
Никуда он не пропадет - отладчик откройте и ...
Ответить с цитированием
  #14 (permalink)  
Старый 05.09.2016, 19:52
Аспирант
Отправить личное сообщение для moron Посмотреть профиль Найти все сообщения от moron
 
Регистрация: 29.07.2012
Сообщений: 49

Я открыл и получаю undefined (google chrome 52.0.2743.82 (64-bit))
И это правильное поведение. По ссылке, которую ты мне дал
"Добавление innerHTML+= осуществляет перезапись"
и именно потому что перезапись, потому что на самом деле элементы из dom удаляются, но в коллекции на них остается ссылка, поэтому они остаются в памяти. И именно поэтому у него меняется родитель..
Либо ты не понимаешь этого, либо ты не понимаешь, что я хочу.
В любом случае спасибо :с

* Сообщения дублировались, потому что я не заметил, как мы перешли на вторую страницу.
Ответить с цитированием
  #15 (permalink)  
Старый 05.09.2016, 19:53
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от moron
Иначе как ты обьяснишь, что после innerHTML у .a пропадает родитель?
Еще раз - никуда он не пропадает, а содержимое перезаписывается. Вы по ссылке прочли?

Вы получили коллекцию, затем модифицировали DOM и хотите чтобы при этом старые ссылки работали как надо?

$("#root").get(0).innerHTML += "<div class='b'>b-dynamic</div>";
var $b = $("div.b"),
    $a = $(".a")
console.log($a.eq(0).parent().prop("tagName"))


Все на месте?
Ответить с цитированием
  #16 (permalink)  
Старый 05.09.2016, 19:57
Аспирант
Отправить личное сообщение для moron Посмотреть профиль Найти все сообщения от moron
 
Регистрация: 29.07.2012
Сообщений: 49

В этом случае да. В моем случае добавление перед получением коллекций сложноосуществимо...
Поэтому я отказался в конкретном случае от innerHTML.
За ссылку спасибо :с За внимание тоже.
Цитата:
модифицировали DOM и хотите чтобы при этом старые ссылки работали как надо
Да. Неочивидность как раз том, что innerHTML ничего не модифицирует, а удаляет все и пишет новое..

Про исчезновение родителя я говорил в таком коде:
$a = $(".a")
$root[0].innerHTML += "1";
console.log($a.eq(0).parent().prop("tagName"))
Ответить с цитированием
  #17 (permalink)  
Старый 05.09.2016, 20:13
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от moron
innerHTML ничего не модифицирует, а удаляет все и пишет новое..
Ну здрастье, то есть перезапись это не модификация?
Просто достаточно знать это. Например, можно root делегировать обработчик щелчков по дочерним DIV. Затем добавлять в него новые дочерние DIV, как при этом они будут добавляться не важно, все будут работать и будет доступно. Но то что вы пытаетесь делать уже не получится.
Ответить с цитированием
  #18 (permalink)  
Старый 05.09.2016, 21:26
Аспирант
Отправить личное сообщение для moron Посмотреть профиль Найти все сообщения от moron
 
Регистрация: 29.07.2012
Сообщений: 49

С делегирование все дочтаточно очевидно, потому что мы вешаем обработчик на родителя а внутри обработчика проверяем event.target. Нам все равно, есть ли обьекты, когда они были добавлены и т.д
Ответить с цитированием
  #19 (permalink)  
Старый 06.09.2016, 01:44
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от moron
С делегирование все дочтаточно очевидно, потому что мы вешаем обработчик на родителя
Ну так и обратное очевидно - получили ссылку на объект, перезаписали его, ссылка не действительна. Но ничто не запрещает сначала получить ссылку на родителя через дочерний элемент, а только затем третировать DOM.
Ответить с цитированием
  #20 (permalink)  
Старый 06.09.2016, 01:56
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

insertAdjacentHTML не пробовали
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение состояния DOM denysdovhan Events/DOM/Window 10 27.05.2014 12:54
Изменение масштаба в браузере с помощью js Bond Общие вопросы Javascript 3 09.04.2014 18:25
Повесить событие на изменение DOM nebaz Events/DOM/Window 5 17.06.2012 15:15
Изменение картинки с помощью radio magahed Элементы интерфейса 1 15.11.2011 20:59
Изменение параметра "ALT"("TITLE") тега IMG посредством DOM Гость Элементы интерфейса 3 21.02.2008 10:02