HeavenlyWaltz
@HeavenlyWaltz
не определился в жизни.

Touchend вызывается много раз почему?

Здравствуйте всем. такой вопрос может кто знает ответ.
Есть функция: вызывается при касании на блок
$('.TestBlock').on('touchstart', function(event) {
// bla bla bla
     $(this).on('touchmove',function(event) {
      //bla bla bla
      }),false;

     $(this).on('touchend',function(event) {
        console.log('End');
      }),false:
 }),false;


Все функции работают нормально. но вот touchend почему-то после каждого отпускания прогоняет функцию много раз ( чем больше раз отпустил тем больше прогоняет ) по принципу 1 раз отпустил 1 раз прогнал, еще раз ткнул в элемент 2 раза прогнал , еще раз ткнул 3 раза прогнал и т.д словно touchend++ ну или touchend = touchend+1;

Как бороться с этим ? мне нужно чтобы функция 1 раз выполнилась а не столько раз сколько уже отпускали как быть ?
  • Вопрос задан
  • 291 просмотр
Решения вопроса 2
svistiboshka
@svistiboshka
живые веб интерфейсы
попробуйте .on заменить на .one
Ответ написан
@MrTimon
Каждый раз когда вы натискаете на один .TestBlock на него навешиваются ивенты touchmove и touchend. Тоисть у вас также touchmove должен работать по правде, мне кажется вы просто не заметили.

Непонятно зачем вы вообще touchmove и touchend ивенты навешиваете при таче на елемент. Я бы посоветол вынести их из под touchstart.
$('.TestBlock').on('touchstart', function(event) {
// bla bla bla
    
 }),false;

 $('.TestBlock').on('touchmove',function(event) {
      //bla bla bla
      }),false;

     $('.TestBlock').on('touchend',function(event) {
        console.log('End');
      }),false:


ну или перед каждым навешиванием ивента удалять предыдущий.
$('.TestBlock').on('touchstart', function(event) {
// bla bla bla
     $(this).off('touchmove');
     $(this).on('touchmove',function(event) {
      //bla bla bla
      }),false;
     $(this).off('touchend');
     $(this).on('touchend',function(event) {
        console.log('End');
      }),false:
 }),false;


Ну или, как писали выше, заменить on на one
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы