24.07.2015, 13:56
|
Интересующийся
|
|
Регистрация: 09.07.2015
Сообщений: 15
|
|
Слетает обработчик после AJAX
Доброго времени суток!
В теле HTML страницы есть такая конструкция
<div id="ajax_response">
...
<span id="myid">bla-bla</span>
...
</div>
В скрипте на тег <span> повешен обработчик
(function() {
document.getElementById("myid").style.display = "none";
})();
После того, как AJAX обновит весь <div>, обработчик со <span> слетает. Подскажите пожалуйста, как правильно в этой ситуации повесить обработчик?
Спасибо
|
|
24.07.2015, 14:19
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
S.E.K.T.O.R.,
Ну дык при удалении элемента нет события привязанного к нему и свойств стиля привязанных к данному элементу DOM.
Новозагруженные элементы(с теми же селекторами) не имеют отношения к объекту старых установок
Проще менять добавлять класс элементу с селектором и прописать скрытие в стиле
==============
Для переемственности текущего состояния нун перед загрузкой считывать в массив старые установки и возвращать на подгруженные идентичные элементы, или грузить избирательно лишь обновляемое содержимое
==============
Мон вешать событийную обработку на элемент через атрибуты (onclick и т.д.)
Последний раз редактировалось Deff, 24.07.2015 в 14:28.
|
|
24.07.2015, 15:14
|
Интересующийся
|
|
Регистрация: 09.07.2015
Сообщений: 15
|
|
Сообщение от Deff
|
Проще менять добавлять класс элементу с селектором и прописать скрытие в стиле
|
Я понимаю, что проще, но скрывать нужно именно через JS. В скрипт, который обновляет весь <div>, я вмешиватся так же не могу.
Сообщение от Deff
|
Мон вешать событийную обработку на элемент через атрибуты (onclick и т.д.)
|
Это да, но ведь нет события, что бы прописать спану "display: none" по умолчанию?
|
|
24.07.2015, 16:28
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
S.E.K.T.O.R.,
используйте делегирование
|
|
24.07.2015, 16:36
|
Интересующийся
|
|
Регистрация: 09.07.2015
Сообщений: 15
|
|
Сообщение от devote
|
используйте делегирование
|
Я тоже об этом думал, но получилось корректно написать. Можно простенький пример?
|
|
24.07.2015, 16:48
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
S.E.K.T.O.R.,
document.body.onclick = function(e) {
if (e.target.id === "myid") {
e.target.style.display = "none";
}
};
Смотря что тебе надо, ты ведь не удосужился нормальный код привести в пример. Привел какие-то огрызки, в которых ничего не понять.
|
|
24.07.2015, 23:37
|
Интересующийся
|
|
Регистрация: 09.07.2015
Сообщений: 15
|
|
Сообщение от devote
|
Смотря что тебе надо, ты ведь не удосужился нормальный код привести в пример. Привел какие-то огрызки, в которых ничего не понять.
|
Да вроде как описал все что нужно. В кратце:
Есть на странице <span>. Нужно через JS сделать ему style.display = "none" при загрузке страницы и что бы этот style не слетал после AJAX, так как сам нужный <span> находится внутри контейнера, который обновляется AJAX'ом.
В вашем примере, стиль присваиватся при клике на <span>, мне же нужно то же самое, но при загрузке страницы.
|
|
24.07.2015, 23:41
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
S.E.K.T.O.R.,
Поставить скрипт сразу после контейнера на странице, Вызвать програмный клик.
А почему просто не поставить строку document.getElementById("myid").style.display = "none"; ?
|
|
24.07.2015, 23:43
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от S.E.K.T.O.R.
|
Да вроде как описал все что нужно. В кратце:
Есть на странице <span>. Нужно через JS сделать ему style.display = "none" при загрузке страницы и что бы этот style не слетал после AJAX, так как сам нужный <span> находится внутри контейнера, который обновляется AJAX'ом.
В вашем примере, стиль присваиватся при клике на <span>, мне же нужно то же самое, но при загрузке страницы.
|
====================
Опять жа без выложенного минимального кода - это обсуждения в "курилке"
|
|
25.07.2015, 00:01
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
S.E.K.T.O.R.,
еще раз говорю, мы не ясновидящие... приведи часть кода который у тебя не работает, а гадать что и как у тебя там сделано никто не будет.
|
|
|
|