在堆积的元素的Jquery移动轻拍

时间:2012-12-05 08:25:51

标签: jquery events web-applications mobile tap

我正在使用与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');
}

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

使用menuActive函数中的e.preventDefault()修复它。虽然我无法理解为什么它会通过我的#contentholder ...哦,好吧,现在它有效......

答案 1 :(得分:0)

我很抱歉回答并没有链接到这些信息,但我找不到我在哪里阅读它。

总之,'tap'事件是替换'click',因为'click'等待太多毫秒才能知道它是点击还是其他事件。

因为它太短,所以当它导致某些东西移动时不应该使用它。这是因为“点击”或“点击”将在该X和Y处仍然注册,然后单击现在公开的区域。

您似乎找到了解决方案。