2016-01-08 4 views
1

Я делаю базовую мобильную навигацию и использую событие click для отображения/скрытия меню.jQuery toggle() не всегда срабатывает

Уменьшенный образец кода:

 jQuery('.menu-button').click(function(){ 
      jQuery('.header-nav').toggle(); 
      console.log('clicked'); 
     }); 

Я удаленно отладки на мобильном телефоне и console.log всегда работает, но .header-navtoggle(), кажется, случайно не вызвать - я не могу определить шаблон для он, но он всегда остается в DOM (который он должен), поэтому его как-то удалить не является причиной, по которой он не стреляет.

Любые идеи?

+2

остается в DOM, как именно, 'toggle' ничего не удалить, она просто скрывает это? – adeneo

+0

Извините, я имею в виду, что он находится в DOM (что ему нужно), поэтому его как-то удалить не является причиной, по которой он не стреляет. – user319940

+0

Используйте событие ontouch, а не событие click. http://stackoverflow.com/questions/9122679/difference-between-ontouch-and-onclick-android – amitguptageek

ответ

1

Благодаря комментарию Кевина Б. кажется, что событие click срабатывает несколько раз. Чтобы исправить это, было использовано следующее:

$(element).off().on('click', function() { 
    // function body 
}); 

Ссылка: jQuery click events firing multiple times

+0

или ... вы можете перемещать событие щелчка из любого обработчика события, в котором он находится, где-то в другом месте. ясно, что вам не нужно повторно связывать его. –

+0

Я не думаю, что это обязательно хорошее решение. В идеале вы найдете основную причину «дополнительных» кликов. Удачи! :) – tpdietz

+0

Это одна из тех исправлений «на данный момент», которая будет пытаться исследовать дальше. Странно, хотя это довольно простая функция, которая вызывается в document.ready и window.resize. – user319940

Смежные вопросы