2016-07-07 123 views
1

这适用于桌面浏览器,但不适用于我的iOS手机。我试着添加'touchstart',并看着this post's solution来检查其他人是如何运作的,但它仍然无法正常工作。有关其他选项的建议?我也尝试添加e.preventDefault() - 并将函数添加到函数()中,但这并不奏效。Javascript不适用于手机,但适用于台式机

我曾尝试:

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

编辑: 看来有可能是别的事情上,我改变了代码,以便尽可能通用和它不发射iOS上的事件,但工作在我的铬模拟器:

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

其他更新:

我加入以下代码到我的script.js文件:

$('body').css('display', 'none'); 

正如预期的那样,我的桌面浏览器对于本地和heroku都是空白的,但是当我在移动设备上进行测试时,屏幕并非空白。它看起来像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

删除让我为我解决问题。 – cmac

1

这会帮助你。而不是将其绑定到body元素,将事件绑定到文档。

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

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

也可以尝试改变添加以下的风格myContainer中类

cursor : pointer; 
+0

谢谢。我再次检查,以确保在我的样式中添加了光标:指针,并将其更改为文档。它仍然没有工作,所以我检查了我的浏览器控制台,看到它发射了两个事件。我添加了e.stopImmediatePropagation(),但它仍然发射了两个事件。我认为从'点击touchstart'切换到点击,现在它只触发一个事件,但它仍然不适用于移动设备。然后,我尝试了'touchstart'而没有'点击',它也不适用于移动设备。它在我的手机模拟器中使用chrome,但不在我的iphone上。 –

相关问题