【发布时间】:2015-06-15 19:19:36
【问题描述】:
使用 HTML、CSS 和 JS(技术上是 Angular,如果你认为它很重要的话)
- 以桌面样式查看时,我有一个带有下拉子菜单和子子菜单的标题菜单。
- 在 PC 上,子菜单出现在悬停时,单击条目会将您带到某个地方。
- 单击根条目会将您带到不同的地方 - 因此它有两个用途:成为某个位置的链接以及成为下拉菜单的悬停触发器。
- 并非所有根元素都有子菜单。
- 有一个单独的移动菜单,基于宽度媒体查询,但平板电脑(尤其是在横向模式下)以桌面样式显示,这让我很吃惊!
在平板电脑上(在 Safari iOS 和 Chrome for iPad 中进行了测试),浏览器具有强大的魔力!...
- 对于没有下拉菜单的元素,然后单击它们会将您带到 链接。
- 对于具有下拉子菜单的元素,然后
- 第一次单击具有激活悬停的效果 - 它不会激活链接,但会显示菜单。
- 第二次点击会激活链接。
可爱!
问题是……如果您点击菜单,它们不会消失。
- 点击页面通常没有任何作用(没有引发点击事件)
- 点击页面上可点击的内容会清除菜单,并且还会为您点击的任何内容调用点击操作。
我的第一个想法是在整个页面的其余部分放置一个透明的 div,在页面上方但在菜单下方,并绑定一个可以清除菜单的点击事件。 但是,我无法点击 both 的透明层和底层页面。 See here for the problems I hit there.
将点击事件放在主体上(以便它被冒泡触发)不起作用(点击事件不会被触发。)
我尝试添加 ngTouch,这确实会导致到处触发点击事件,但也会破坏子菜单打开的行为 - 所有链接都会立即触发,您无法访问子菜单。
有什么想法吗?救命!
【问题讨论】:
-
请向我们展示您正在使用的实际代码,以便能够重现问题。
标签: javascript angularjs drop-down-menu hover click