我正在使用与facebook app / webapp类似的导航结构制作一个webapp。
我的问题是,当我点击“显示菜单”按钮时,我也会点击其背后的菜单项。
我的HTML结构是这样的:
<div id="menu">
<ul>
<li>
<a href="page.html">Menu item</a>
</li>
</ul>
</div>
<div id="contentholder">
<div id="menu-btn"></div>
</div>
#menu和#contentholder放在彼此的顶部,位置为:absolute; top:0; left:0;
我使用Jquery mobile进行触摸事件。
我的点按脚本如下:
$('body').on('tap', '#menu-btn', menuActive);
我在menuActive函数中尝试了e.stopPropagation(),但这似乎没有做任何好事。
menuActive功能:
function menuActive(e){
$('#menu-btn').addClass('active');
$('#contentholder').addClass('slided');
}
有什么建议吗?
答案 0 :(得分:0)
使用menuActive函数中的e.preventDefault()修复它。虽然我无法理解为什么它会通过我的#contentholder ...哦,好吧,现在它有效......
答案 1 :(得分:0)
我很抱歉回答并没有链接到这些信息,但我找不到我在哪里阅读它。
总之,'tap'事件是替换'click',因为'click'等待太多毫秒才能知道它是点击还是其他事件。
因为它太短,所以当它导致某些东西移动时不应该使用它。这是因为“点击”或“点击”将在该X和Y处仍然注册,然后单击现在公开的区域。
您似乎找到了解决方案。