【发布时间】:2014-06-13 14:34:22
【问题描述】:
我在使用 CSS 创建的网页上有一个下拉菜单。将鼠标悬停在项目上时,它会下拉子菜单。它在我的 PC 上运行良好,但在触摸屏上单击菜单外时无法关闭菜单。我找不到让触摸屏识别我不再点击菜单的方法。
所以基本上我需要触发一个触发器来告诉菜单在我触摸菜单外的任何位置时关闭。
我想我需要某种 Javascript 或 JQuery 触发器。我不知道如何简单地使用 CSS 来做到这一点。
如果您想查看它,我可以包含菜单的 CSS,但这只是创建菜单。我需要一些可以关闭菜单并且不在 CSS 中的东西。
编辑:
到目前为止,这是唯一有效的方法,但是如果它在菜单上,我怎么能告诉它忽略触摸呢?
$(document).bind('touchstart', function(event) {
event.preventDefault();
var target = event.target;
target = $(this);
alert("touched");
});
HTML
<div id="menu">
<ul id="nav">
<li class="taphover"><a href="#">Tools</a>
<ul>
<li><a href="#">Change Password</a></li>
</ul>
</li>
【问题讨论】:
-
@ckersch 实际上有一种“更好”的方式(比您链接中接受的答案)来处理这个问题。这是一篇涵盖此主题的文章:css-tricks.com/dangers-stopping-event-propagation
-
如果可以的话,可以发
html,css,js吗?试过 jquery.on("touchmove", fn)吗?见developer.mozilla.org/en-US/docs/Web/Guide/Events/Touch_events -
@demrks 您的链接在 PC 上有效,但在 iPad 上无效。如果我触摸身体的任何地方,下拉菜单不会关闭。
-
执行所有这些示例所建议的完全相同的操作,但使用
touchstart事件而不是click。
标签: javascript jquery css touchscreen