Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.05.2011, 02:16
Аватар для Kosh
Интересующийся
Отправить личное сообщение для Kosh Посмотреть профиль Найти все сообщения от Kosh
 
Регистрация: 17.05.2011
Сообщений: 10

Нарастающее дублирование операций
В общем, пишу аналог slider range для фильтровании контента, нечто вроде навигации по страницам, но более изыскано.
И столкнулся с трабалом повтора события (с каждым новым кликом на холдер операции начинают выполняться дважды  затем трижды и так далее).

Операции начинаются на клику по холдеру, в момент клика возвращаются координаты мышки, ид нажатого объекта.
После события (зажим холдера) всё переходит в обработку окна (ну чтобы при выходе мышки из области слайдера продолжалось фильтрование до тех пор пока не отпустят мышку) и естественно операция разрывается в случаях маусап и маусентера окна (все операции производятся в виде расширений библиотеки jQuery).

Чтобы объединить обе области я создал переменную, которая хранить в себе изначальные координаты мышки (переменные обозначают место положения в момент нажатия), а в случае окончания действий туда записывается “no” (которое изначально заложено в начале всех операций)
Действия над монитором проворачиваются в тех случаях, если изначальные координаты не равны no.


Сам скрипт не выкладываю, так как он размазан по гигантскому скрипту, который разве что пивом не умеет угощать.

Использую jQuery 1.5.2 с множеством заплаток и модов, так что от jQuery в любом случае не отказаться и, следовательно, можно спокойно применять её библиотеку.

СУТЬ
Собственно всё бы хорошо, но если повторно кликать на холдер, то с каждым кликом появляется дублёр, который после первой транзакции начинает 2 раза всё высчитывать и двигать, затем 3 раза и так далее (при каждом новом нажатии на холдер он возрастает и в итоге фильтровка начинает тормозить).

ВОПРОС
Это происходит, потому что я не произвожу return после каждой функции?
Надо убивать транзакцию через “event.preventDefault()”?
По другой причине ^—>

P.S.
На сколько велика потребность в return? (в тех случаях, когда данные, по сути, не надо возвращать, но повтор операции может произойти).

Последний раз редактировалось Kosh, 27.05.2011 в 14:23.
Ответить с цитированием
  #2 (permalink)  
Старый 28.05.2011, 10:56
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от Kosh Посмотреть сообщение
...если повторно кликать на холдер, то с каждым кликом появляется дублёр ... и начинает тормозить
Совет: напишите функцию обработки клика отдельно на чистом листе. Так чтобы она была максимум 10 строк. Проверьте правильно ли работает, расставив в контрольных точках обычные alert_ы. Потом постепенно наращивайте её. Иначе причину будете искать оочень долго..
Ответить с цитированием
  #3 (permalink)  
Старый 07.06.2011, 04:48
Аватар для Kosh
Интересующийся
Отправить личное сообщение для Kosh Посмотреть профиль Найти все сообщения от Kosh
 
Регистрация: 17.05.2011
Сообщений: 10

Так и сделал, помогло.
Вынес все глобальные события в один оператор с переключателем и онная проблема пропала.
А сам скрипт начал летать как удар встречной электрички.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объясните пожалуйста порядок действий lukingnu AJAX и COMET 9 26.03.2011 10:35
Запоминание действий serg_29rus Общие вопросы Javascript 4 25.01.2011 21:03
дублирование событий sintet jQuery 4 21.12.2010 07:31
Скрипт - автоматизация повторяющихся действий rom4ik Работа 10 21.07.2010 14:01
Дублирование значения одного поля формы в другое LatSer Общие вопросы Javascript 0 15.01.2010 14:46