Событие клика jQuery не работает в мобильном Firefox

У меня есть меню навигации, которое отображается и скрывается на мобильных устройствах при нажатии на элемент. Он работает везде, кроме Firefox на Samsung Galaxy 3. Вот HTML:

<nav id="nav" role="navigation">
  <ul>
    <li>Menu Item 1</li>
    <li>Menu Item 2</li>
  Etc . .
  </ul>
 </nav>
 <div id="nav-arrow">&#9660;</div>

Элемент с прикрепленным событием щелчка называется «nav-arrow». Вот jQuery:

$("#nav-arrow").click(function() {
        if ($("#nav").is(":visible")) {
            $("#nav").slideUp(800, function() {
                $("#nav-arrow").html("&#9660;");
            }); 
        } else {
            $("#nav").slideDown(800, function() {
                $("#nav-arrow").html("&#9650;");
            });             
        }
    });

Контейнер имеет свойство display:none, пока не будет нажата стрелка навигации. Может ли кто-нибудь помочь мне заставить это работать на Mobile Firefox?


person joakland    schedule 02.10.2014    source источник
comment
Я действительно не уверен, возможно ли то, что вы пытаетесь сделать. Так и должно быть, но я не совсем уверен, что у jquery есть необходимая основа для обработки кликов на мобильных устройствах. Я думаю, что вы хотите использовать jquery-mobile и событие vclick.   -  person Brandon Kindred    schedule 03.10.2014
comment
Это работает на всех мобильных устройствах и браузерах, кроме Firefox на Samsung Galaxy.   -  person joakland    schedule 03.10.2014
comment
Посмотрите, что будет делать использование .on('click', function... вместо простого .click   -  person tbh__    schedule 03.10.2014
comment
stackoverflow.com/questions/21776570/ Это я думаю твоя проблема?   -  person tbh__    schedule 03.10.2014
comment
Использование .on('click' дало те же результаты. В итоге я решил эту проблему, загрузив только события касания из jQuery Mobile Download Builder и переключив функцию щелчка на .on('tap', function... и т.д. Это было лекарство.   -  person joakland    schedule 03.10.2014


Ответы (1)


jQuery Mobile требует метода «делегата»:

$(document).delegate('#nav-arrow', 'click', function () {
    if ($("#nav").is(":visible"))
    {
        $("#nav").slideUp(800, function()
        {
            $("#nav-arrow").html("&#9660;");
        }); 
    }
    else
    {
        $("#nav").slideDown(800, function()
        {
            $("#nav-arrow").html("&#9650;");
        });
    }    
});
person Tim Samoff    schedule 24.11.2014