我有响应式下拉菜单,对于平板电脑用户,我取消了点击,因此使用event.preventDefault()的下拉菜单 这在ipad上工作正常但在Android上却不行。函数本身就像我做了一些测试一样,但event.preventDefault()不会取消点击。我尝试过返回false,但它对我也不起作用。 我已经看到几个相关的帖子很安静,但无法找到解决方案。 我使用的javascript是:
$("#nav li a").on({ 'touchstart' : function(event) {
//if there is a submenu we cancel the click to show the drop down
if (String($(this).parent().find('ul').html())!='undefined')
{
event.preventDefault();
}
}
});//end of touch event
答案 0 :(得分:2)
听起来你的事件可能正在冒泡,尝试event.stopPropagation(); 另外看看双击插件,我之前也遇到过这个问题。
答案 1 :(得分:0)
尝试检查 touchend
- Android也为preventDefault
提供了一些时髦的行为。此外,如果你的问题是在锚点上发生这种情况,请考虑用javascript替换锚点的href:void(0);
Instead of this:
<a href="#">Open Menu</a>
Do this:
<a href="javascript:void(0);">Open Menu</a>
在整个生命周期中触摸事件,看起来 preventDefault
与停止其他事件(touchmove
,{{1}有任何关系等等)。
您还可以查看jQuery的touchend
事件,它会尝试淡化鼠标点击事件并将事件触及到一个类似的事件中,但您一定要阅读注释和警告http://api.jquerymobile.com/vclick/
答案 2 :(得分:0)
也许在Android上,touchend
或click
事件也会被触发。您是否尝试将这些事件添加到听众中?试试这个:
$("#nav li a").on({ 'touchstart touchend click' : function(event){
if (String($(this).parent().find('ul').html())!='undefined'){
event.preventDefault();
}
}});