За последние 24 часа нас посетили 17487 программистов и 1745 роботов. Сейчас ищут 984 программиста ...

Нарастающее дублирование операций с каждым повтором действия

Тема в разделе "JavaScript и AJAX", создана пользователем Kosh, 27 май 2011.

  1. Kosh

    Kosh Активный пользователь

    С нами с:
    27 май 2011
    Сообщения:
    9
    Симпатии:
    0
    Подробно с лирикой
    В общем, пишу аналог range slider для фильтровании контента, нечто вроде навигации по страницам, но более изыскано.
    И столкнулся с трабалом повтора события (с каждым новым кликом на холдер операции начинают выполняться дважды —> затем трижды и так далее).

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

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


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

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

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

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

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