Javascript 如何防止顶级下拉锚导航?

Javascript 如何防止顶级下拉锚导航?,javascript,html,twitter-bootstrap-3,Javascript,Html,Twitter Bootstrap 3,我正在使用一个基本的引导v3下拉菜单作为主导航菜单。我的代码如下所示: 当然,级别1没有目的地,它只是切换下拉列表。当您选择Level 2时,您将访问一个动态生成我们称之为JobId的网页,然后立即将您重新定向到最终目的地,并将JobId作为URL中的查询字符串 这是我的问题: 如果用户在Level 2上单击鼠标右键并选择“在新选项卡中打开”,则一切正常,因为他们首先完成了JobId过程,最后得到了一个新的JobId。但是,如果他们意外地右键单击级别1并选择“在新选项卡中打开”,则他们将获得当前

我正在使用一个基本的引导v3下拉菜单作为主导航菜单。我的代码如下所示:

当然,级别1没有目的地,它只是切换下拉列表。当您选择Level 2时,您将访问一个动态生成我们称之为JobId的网页,然后立即将您重新定向到最终目的地,并将JobId作为URL中的查询字符串

这是我的问题: 如果用户在Level 2上单击鼠标右键并选择“在新选项卡中打开”,则一切正常,因为他们首先完成了JobId过程,最后得到了一个新的JobId。但是,如果他们意外地右键单击级别1并选择“在新选项卡中打开”,则他们将获得当前所在页面的相同副本,因此最终会得到两个具有相同JobId的浏览器选项卡,这对我们的应用程序来说是一场灾难

我所尝试的: 我曾尝试将顶级href属性设置为,尝试将其设置为空白,尝试完全省略href,我还尝试将URL设置为我们的欢迎屏幕,以防万一

唯一有效的方法是将顶级菜单项链接到欢迎屏幕,但是它有副作用。在您第一次加载页面时,下拉列表工作得非常好。但是一旦你选择了一个菜单项,那么下一次你点击一个顶级的菜单项,而不是显示下拉菜单,你就会进入欢迎屏幕


除了显示下拉菜单之外,我还有什么其他想法可以阻止级别1项目做任何事情吗

为什么级别1需要成为锚?只是因为Bootstrap就是这样设计的,所以不必是这样。事实上,由于级别1锚已经在列表项中,只需移除锚并将“级别1”文本放置在列表项中即可。

为什么要使用锚元素?这在语义上是错误的,并且不匹配。它应该是一个语义正确的元素,比如一个按钮。它可以被设计成适合的样式。实际上你是对的,应该有一些元素触发打开。另一方面,触发器可以完全移除,只需使用鼠标悬停来打开/关闭菜单。这也是一种不好的方法,因为移动设备没有鼠标悬停。我在CMS上使用相同的方法,我维护…隐藏任何东西都是一种不好的方法。因此,一旦你打开汉堡包菜单,我就会显示所有导航项。谢谢,我将顶级项转换为div,并将其样式设置为锚定标记的样式!