выпадающее меню, не работающее на мобильном устройстве, клик не запускается [дубликат]

Это потому, что, когда вы вводите номер, нажмите «Ввод», input.nextInt() потребляет только номер, а не «конец строки». Когда input.nextLine() выполняется, он потребляет «конец строки» все еще в буфере с первого входа.

Вместо этого используйте input.nextLine() сразу после input.nextInt()

49
задан Gruber 11 September 2015 в 05:03
поделиться

5 ответов

Чтобы вызвать функцию нажатием или касанием, вы можете изменить это:

$(document).click( function () {

К этому:

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

Или это:

$(document).on('click touch', function () {

Событие touchstart срабатывает, как только элемент прикасается, событие touch больше похоже на «ответвление», то есть на один контакт на поверхности. Вы действительно должны попробовать каждый из них, чтобы увидеть, что лучше всего подходит для вас. На некоторых устройствах touch может быть немного сложнее вызвать (что может быть хорошим или плохим - оно предотвращает подсчет перетаскивания, но случайное небольшое перетаскивание может привести к его не срабатыванию).

132
ответ дан user75525 26 August 2018 в 09:45
поделиться

Как указано выше, использование 'click touchstart' даст желаемый результат. Если вы console.log(e) свои клики, вы можете обнаружить, что когда jquery распознает касание как щелчок - вы получите 2 действия от нажатия и сенсорного ввода. Решение для меня работало.

//if its a mobile device use 'touchstart'
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
    deviceEventType = 'touchstart'
} else {
//If its not a mobile device use 'click'
    deviceEventType = 'click'
}

$(document).on(specialEventType, function(e){
    //code here
});
1
ответ дан Aaron Shier 26 August 2018 в 09:45
поделиться

touchstart или touchhend не хороши, потому что, если вы прокручиваете страницу, устройство действительно работает. Поэтому, если я хочу закрыть окно с нажатием или щелчком вне элемента и прокрутить окно, я сделал:

$(document).on('touchstart', function() {
    documentClick = true;
});
$(document).on('touchmove', function() {
    documentClick = false;
});
$(document).on('click touchend', function(event) {
    if (event.type == "click") documentClick = true;
    if (documentClick){
        doStuff();
    }
 });
33
ответ дан ale 26 August 2018 в 09:45
поделиться

можете ли вы использовать jqTouch или jquery mobile ? там гораздо легче обрабатывать события касания. Если нет, то вам нужно имитировать щелчок на сенсорном устройстве, следуйте этим статьям:

iphone-touch-events-in-javascript

A touch demo

Подробнее в этой теме

4
ответ дан Community 26 August 2018 в 09:45
поделиться

Чтобы применить его повсюду, вы можете сделать что-то вроде

$('body').on('click', function() {
   if($('.children').is(':visible')) {
      $('ul.children').slideUp('slow');
   }
});
2
ответ дан jezza-tan 26 August 2018 в 09:45
поделиться
Другие вопросы по тегам:

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