2016-07-07 2 views
1

Это работает на настольном браузере, но не на моем мобильном телефоне iOS. Я попробовал добавить «touchstart» и посмотрел на this post's solution, чтобы проверить, как другие получили его на работу, но он все еще не работает. Любые предложения относительно других вариантов? Я также попытался добавить e.preventDefault() - и добавил e в функцию(), но это не сработало.Javascript не работает на мобильных устройствах, но работает на рабочем столе

Я пробовал:

$('body').on('click touchstart', '.myContainer', function() { 
    $(this).toggleClass('myContainer-unselected').toggleClass('myContainer-selected'); 
}); 

Edit: Он появляется там может быть что-то еще, я изменил код, чтобы быть как можно более общими и не выпустив событие на прошивке, но работает в моем хромированном эмуляторе:

$(document).on('click touchstart', 'body', function() { 
     alert('hi'); 
    }); 

Дополнительное обновление:

Я добавил следующий код в свой файл script.js:

Как и ожидалось, экран остается пустым в моем браузере для рабочего стола как для локального, так и для героя, но когда я тестирую на мобильном телефоне, экран не пуст. Похоже, что js работает неправильно.

Изображения присоединенные:

enter image description hereenter image description here

ответ

5

Ответ: причина, это не работает на IOS Safari, потому что в моей странице JS я использую ES6, в частности, «пусть ', который [не поддерживается в настоящее время] [1]. Изменено на ES5, и проблема исчезла.

$('body').on('click', '.dashboard_leftNav_category a', function() { 
     var link = $(this).attr('showSection'); //changed from let link 
     var show = $('[section="'+link+'"]'); 
     $('[section]').hide(); 
     $('body').find(show).fadeIn(); 
     $('html,body').scrollTop(0); 
    }); 
+1

remove let исправил проблему для меня. – cmac

1

Это должно помочь вам. Вместо привязки к элементу body привяжите событие к документу.

$(document).on('click touchstart', '.myContainer', function() { 

     $(this).toggleClass('myContainer-unselected').toggleClass('myContainer-selected'); 
    }); 

Также попробуйте изменить, добавив следующий стиль класса MyContainer

cursor : pointer; 
+0

Спасибо. Я дважды проверял, чтобы убедиться, что в моем стиле я добавил курсор: указатель, и я изменил его на документ. Он по-прежнему не работает, поэтому я проверил мою консоль браузера и увидел, что он запускает два события. Я добавил e.stopImmediatePropagation(), но он все еще запускал два события. Я думаю, что переключил его с «click touchstart», чтобы просто щелкнуть, и теперь он запускает только одно событие, но он по-прежнему не работает на мобильных устройствах. Затем я попробовал «touchstart» без «щелчка», и он не работает на мобильных устройствах. Он работает в моем мобильном эмуляторе в хроме, но не на моем iphone. –