20.04.2009, 12:10
|
Профессор
|
|
Регистрация: 18.04.2008
Сообщений: 152
|
|
Сообщение от idler
|
Я не знаю как сейчас, но правильней было бы поставить перенавешивание обработчиков на все события при событии изменения dom-дерева - думаю так и сделали
|
Я не согласен, что это правильно.
В-первых, это бы адски тормозило при любом изменении дерева средствами jQuery — алгоритм не тривиальный, обход дерева — ресурсоемкая задача.
Во-вторых, изменения сделанные нативными DOM-методами (или через другие фреймворки) не отслеживались бы (да, я знаю про DOMchanged или как его там, но в IE это не поддерживается).
В-третьих, уже довольно давно существуют техники, которые позволяют осуществить все то же самое быстрее, проще и изящнее.
|
|
20.04.2009, 14:00
|
Аспирант
|
|
Регистрация: 16.04.2009
Сообщений: 33
|
|
Возможно вы правы. Я сразу оговорился, что не в курсе... надо будет посмотреть.
Но думаю в случае обрабатывания каждого события и делегация обработчика тоже.... при каждом mousemove ...
В общем надо посмотреть как реализовано для самообразования...
|
|
20.04.2009, 14:24
|
Интересующийся
|
|
Регистрация: 07.04.2009
Сообщений: 24
|
|
> В-первых, это бы адски тормозило при любом изменении дерева средствами jQuery — алгоритм не тривиальный
Reglib не тормозит. Во всяком случае, на каком-то классе изменений.
ЗЫ не надо спекулировать этими "быстро-медленно", современные компы таковы, что практически все догадки обламываются
|
|
20.04.2009, 14:59
|
Профессор
|
|
Регистрация: 18.04.2008
Сообщений: 152
|
|
Артем Шалхаков, не надо спекулировать «современными компами» У пользователя может быть не очень новый комп. А приложение может быть довольно ресурсоемким.
Reglib, судя по всему, делает LoadAndTraversal только для невсплывающих событий типа submit'а — там без этого не обойтись, да.
|
|
20.04.2009, 16:32
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Shasoft,
на баше как раз к вашему случаю цитата
Цитата:
|
<девушка>: А у меня тут антивир ругается... Он еще спрашивает - что вы хотите делать??? Он глупенький!!! Такое спрашивать у девушки!!! Чего я сейчас хочу делать?!! Я бы позагорала, пожалуй.....
|
|
|
20.04.2009, 16:41
|
|
Профессор
|
|
Регистрация: 03.03.2009
Сообщений: 156
|
|
Народ так активно обсуждает тему, как будто только и ждал, пока я тему открою.
Я тут почитал, что народ пишет и пришел к выводу, что самое простое, это повесить обработчик на div, внитри которого и будет находится дерево каталога. А в обработчике уже проверять, на чем конкретно нажал пользователь.
|
|
20.04.2009, 18:23
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
Сообщение от Shasoft
|
это повесить обработчик на div, внитри которого и будет находится дерево каталога
|
Только вот в target/srcElement будет сам этот div, а не элемент дерева. Придется поплясать с бубном, что бы определить, кого там щелкнули.
Или без бубна как то можно?
|
|
20.04.2009, 18:43
|
Профессор
|
|
Регистрация: 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»
|
|
20.04.2009, 21:34
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
Сообщение от hogart
|
Кажется, нет, как раз в target/srcElement — элемент, на котором произошло событие
|
Ага, туплю помаленьку. Что это со мной. Сам не понимаю.
Сообщение от hogart
|
как раз в target/srcElement — элемент, на котором произошло событие
|
Но это все равно будет не тот элемент. По крайней мере, если он (нужный элемент) содержит в себе другие элементы. Нужно будет перебирать parentNode-ы и выделять нужные элементы по какому-то признаку. Если дошли до body значит клик вне того, что там кто-то выше задумал сделать.
|
|
20.04.2009, 21:36
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
Сообщение от hogart
|
А в this будет div, на который навешен обработчик
|
Сообщение от Riim
|
Нужно будет перебирать parentNode-ы и выделять нужные элементы по какому-то признаку
|
Опять туплю. Если долго не спать то такое случается.
|
|
|
|