Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как бороться с "мёртвыми" привязанными jquery объектами?
|
|||
|---|---|---|---|
|
#18+
Добрый день! Понимаю, что заголовок написал тупой, но сформулировать проблему смогу потому что только в самом посте. Итак, на страничке используются jQuery компоненты типа всплывалок-пояснялок. Например tooltipster . Не принципиально какой из них, сколько я их перебрал, этой проблеме подвержены все. Итак, эти всплывалки вешаются на нужные элементы на страничке и при наведении мыши на них, всплывает информационное окно с текстом. На этой страничке активно используется ajax. И вся проблема в такой ситуации: 1. Мышь над элементом с привязанным tooltipster'ом. 2. Всплыло окошко. 3. Выполнился ajax запрос, который удалил/заменил элемент на странице, к которому привязан tooltipster. 4. Информационное окошко tooltipster'а висит после этого и не пропадает. Я понимаю, почему это происходит. Потому что пропадание инф. окошка происходит при событии "mouseOut" для элемента к которому он привязан. А т.к. этот элемент пропал в момент, когда. инф. окно открыто, то оно и подвисло. Теперь как я это пытался решать: 1. Временное решение рабочее но грабельное и тупое, это повесил на опрелелённую клавиатурную комбинацию запуск функции, которая обходит все в данный момент открытые инф. окна данного компонента и просто их удаляет. Хочется решения правильного и красивого, может какой из типстеров довести до ума. Подскажите пожалуйста сам механизм, как это организовать? Пробовал смотреть есть ли события для DOM элементов типа: onDestroy или что-то типа того, чтобы при удалении элемента из дерева DOM проводились для него какие-то изыскания и если надо то совершались какие-либо действия. Но не нашёл. Помогите! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2016, 08:59 |
|
||
|
Как бороться с "мёртвыми" привязанными jquery объектами?
|
|||
|---|---|---|---|
|
#18+
kormot, речь об этом tooltipster -е? Там в описании методов есть примеры того, как закрыть все инстансы, как закрыть через триггер, как через метод... Почему же получается грабельное и тупое решение? И какое должно быть правильное и красивое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2016, 09:40 |
|
||
|
Как бороться с "мёртвыми" привязанными jquery объектами?
|
|||
|---|---|---|---|
|
#18+
skyANA , да тултипстер этот. Грабельное решение хотя бы потому что требует ручной активации. А красивое и правильное это я написал, то которое удовлетворяет условиям: - при удалении dom элемента, на который повешен тултипстер, связанный с ним тултипстер уничтожается. - делается автоматически, и желательно не пробеганием цикла по всем текущим тултипстерам Зачем в условиях я приписал про избегание цикла, потому что одна из попыток решить эту проблему у меня была такой: - в коде компонента тултипстера при его инициализации на каком-либо dom элементе, я добавлял в глобальный массив ключ связывающий уникальный идентификатор элемента с экземпляром компонента. - периодически (раз в секунду) пробегал по массиву и смотрел, если какого-то dom элемента нет с указанным в массиве идентификатором, то гасил связанный с ним экземпляр тултипстера. Из минусов, почему перешёл на ручной вариант - объектов на странице дохера. Каждую секунду обход этого цикла ощутимо подтормаживает браузер. И добавился геморрой с добавлением элементам на страничке уникальных идентификаторов. (Не id, а например какого-либо аттрибута: rand="случайное число"). Потому и хочется некого тригера для пропадания DOM элемента на страничке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2016, 10:16 |
|
||
|
Как бороться с "мёртвыми" привязанными jquery объектами?
|
|||
|---|---|---|---|
|
#18+
kormot, когда вешаешь свой тулстриппер на элементы, вешай уничтожение этого триппера на событие элемента не? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2016, 10:39 |
|
||
|
Как бороться с "мёртвыми" привязанными jquery объектами?
|
|||
|---|---|---|---|
|
#18+
kormot, на событие "remove" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2016, 10:40 |
|
||
|
Как бороться с "мёртвыми" привязанными jquery объектами?
|
|||
|---|---|---|---|
|
#18+
kormotИз минусов, почему перешёл на ручной вариант - объектов на странице дохера. Каждую секунду обход этого цикла ощутимо подтормаживает браузер. А точно-ли нужно много тултипстеров? Одним разве не обойтись? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2016, 15:17 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=39343165&tid=1444919]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 290ms |
| total: | 433ms |

| 0 / 0 |
