我有一个幻灯片菜单使用vanilla javascript在手机上使用,但到目前为止我所有的测试都导致移动浏览器忽略了第一次点击(尝试了touchstart和点击事件).从第二个水龙头开始,每次随后的水龙头都能很好地工作.
打开和关闭菜单是页面上唯一的javascript函数,我不想加载一个巨大的库,我想保持简单和小.我的代码如下:
var b = document.getElementById('menubtn'); b.addEventListener('touchstart', function (e) { var n = document.getElementById('nav'); var ns = n.style.left; if (ns == "-600px") { n.style.left = "0px"; } else { n.style.left = "-600px"; } e.preventDefault(); });
有没有什么方法可以轻松消除第一次双击的需要?
在fwiw部门,它是一个响应式设计,导航菜单在大屏幕上的一列和电话上的幻灯片.
编辑:解决了问题
按照Matt Styles评论,我尝试使用classList.toggle
并解决了这个问题.最终版本如下:
var b = document.getElementById('menubtn'); var n = document.getElementById('nav'); b.addEventListener('touchstart', function () { n.classList.toggle('shwmenu'); setTimeout(function () { b.classList.toggle('shwmenu'); }, 500); });
我添加了延迟的menubtn代码以在关闭和打开状态之间切换图标.