1

我正在制作一个与 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 以 position: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');
}

有什么建议么?

4

2 回答 2

0

在我的 menuActive 函数中使用 e.preventDefault() 修复了它。虽然我不明白为什么它会通过我的#contentholder...哦,好吧,现在它可以工作了...

于 2012-12-05T12:30:12.147 回答
0

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

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

因为它很短,所以当它引起某物移动时不应该使用它。这是因为“点击”或“点击”将仍然在 X 和 Y 处注册,并点击现在暴露的区域。

看来您找到了解决方案。

于 2013-05-27T15:32:36.030 回答