Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 20.04.2009, 11:10
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

Сообщение от idler Посмотреть сообщение
Я не знаю как сейчас, но правильней было бы поставить перенавешивание обработчиков на все события при событии изменения dom-дерева - думаю так и сделали
Я не согласен, что это правильно.
В-первых, это бы адски тормозило при любом изменении дерева средствами jQuery — алгоритм не тривиальный, обход дерева — ресурсоемкая задача.
Во-вторых, изменения сделанные нативными DOM-методами (или через другие фреймворки) не отслеживались бы (да, я знаю про DOMchanged или как его там, но в IE это не поддерживается).
В-третьих, уже довольно давно существуют техники, которые позволяют осуществить все то же самое быстрее, проще и изящнее.
Ответить с цитированием
  #22 (permalink)  
Старый 20.04.2009, 13:00
Аспирант
Отправить личное сообщение для idler Посмотреть профиль Найти все сообщения от idler
 
Регистрация: 16.04.2009
Сообщений: 33

Возможно вы правы. Я сразу оговорился, что не в курсе... надо будет посмотреть.
Но думаю в случае обрабатывания каждого события и делегация обработчика тоже.... при каждом mousemove ...
В общем надо посмотреть как реализовано для самообразования...
Ответить с цитированием
  #23 (permalink)  
Старый 20.04.2009, 13:24
Интересующийся
Отправить личное сообщение для Артем Шалхаков Посмотреть профиль Найти все сообщения от Артем Шалхаков
 
Регистрация: 07.04.2009
Сообщений: 24

> В-первых, это бы адски тормозило при любом изменении дерева средствами jQuery — алгоритм не тривиальный

Reglib не тормозит. Во всяком случае, на каком-то классе изменений.

ЗЫ не надо спекулировать этими "быстро-медленно", современные компы таковы, что практически все догадки обламываются
Ответить с цитированием
  #24 (permalink)  
Старый 20.04.2009, 13:59
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

Артем Шалхаков, не надо спекулировать «современными компами» У пользователя может быть не очень новый комп. А приложение может быть довольно ресурсоемким.
Reglib, судя по всему, делает LoadAndTraversal только для невсплывающих событий типа submit'а — там без этого не обойтись, да.
Ответить с цитированием
  #25 (permalink)  
Старый 20.04.2009, 15:32
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Shasoft,
на баше как раз к вашему случаю цитата
Цитата:
<девушка>: А у меня тут антивир ругается... Он еще спрашивает - что вы хотите делать??? Он глупенький!!! Такое спрашивать у девушки!!! Чего я сейчас хочу делать?!! Я бы позагорала, пожалуй.....
Ответить с цитированием
  #26 (permalink)  
Старый 20.04.2009, 15:41
Аватар для Shasoft
Профессор
Отправить личное сообщение для Shasoft Посмотреть профиль Найти все сообщения от Shasoft
 
Регистрация: 03.03.2009
Сообщений: 151

Народ так активно обсуждает тему, как будто только и ждал, пока я тему открою.
Я тут почитал, что народ пишет и пришел к выводу, что самое простое, это повесить обработчик на div, внитри которого и будет находится дерево каталога. А в обработчике уже проверять, на чем конкретно нажал пользователь.
Ответить с цитированием
  #27 (permalink)  
Старый 20.04.2009, 17:23
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от Shasoft
это повесить обработчик на div, внитри которого и будет находится дерево каталога
Только вот в target/srcElement будет сам этот div, а не элемент дерева. Придется поплясать с бубном, что бы определить, кого там щелкнули.

Или без бубна как то можно?
Ответить с цитированием
  #28 (permalink)  
Старый 20.04.2009, 17:43
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

Сообщение от Riim Посмотреть сообщение
Только вот в target/srcElement будет сам этот div, а не элемент дерева. Придется поплясать с бубном, что бы определить, кого там щелкнули.
Кажется, нет, как раз в target/srcElement — элемент, на котором произошло событие. А в this будет div, на который навешен обработчик.
См. http://www.quirksmode.org/dom/w3c_events.html#t04: «The target property refers to the HTML element the event actually took place on, even when the event handler has been registered not on the HTML element but on one of its ancestors»
Ответить с цитированием
  #29 (permalink)  
Старый 20.04.2009, 20:34
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от hogart
Кажется, нет, как раз в target/srcElement — элемент, на котором произошло событие
Ага, туплю помаленьку. Что это со мной. Сам не понимаю.

Сообщение от hogart
как раз в target/srcElement — элемент, на котором произошло событие
Но это все равно будет не тот элемент. По крайней мере, если он (нужный элемент) содержит в себе другие элементы. Нужно будет перебирать parentNode-ы и выделять нужные элементы по какому-то признаку. Если дошли до body значит клик вне того, что там кто-то выше задумал сделать.
Ответить с цитированием
  #30 (permalink)  
Старый 20.04.2009, 20:36
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от hogart
А в this будет div, на который навешен обработчик
Сообщение от Riim
Нужно будет перебирать parentNode-ы и выделять нужные элементы по какому-то признаку
Опять туплю. Если долго не спать то такое случается.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JQuery как получить url? Memfis jQuery 8 29.07.2011 00:39
Как в IE динамически установить значение события onClick? Гость Элементы интерфейса 6 16.01.2011 22:46
Как вызвать событие после события определенного в onchange Наталья Events/DOM/Window 2 12.09.2009 12:51
Как заставить this в обработчике события указывать на объект? Dmitryk Events/DOM/Window 3 16.03.2009 07:45
отправка файла через обработчик события submit starrich AJAX и COMET 2 13.08.2008 21:29