2012-02-04 62 views
0

我想创建一个菜单(注册菜单),请参阅this以了解它。当用户点击这个按钮/链接时,出现一个下拉菜单,使用它可以做一些事情(在这里登录)。jQuery:带控件的onclick下拉菜单

链接的行为应该是以下几点:此按钮/链接,点击后会出现

  1. 的下拉菜单。
  2. 当在页面上的任何位置点击(包括按钮/链接本身),但在菜单外,菜单应该消失。
  3. 如果在下拉菜单的某处点击,菜单不应该消失。
  4. 下拉菜单中的所有控件都应该有效。

我做了一些设法得到前三个工作,但然后下拉菜单(第四行为)中的控件不起作用。

javascript/jQuery代码连同html代码给出here(jsfiddle链接,与上面相同)。您可以分叉并进行更改。

谢谢。

+0

哈!我只是问了或多或少相同的问题...你可以在这里看到我的(稍微破碎的)解决方案:http://stackoverflow.com/questions/9138236/jquery-easy-pulldown-menu – neokio 2012-02-04 03:48:04

回答

4
+0

这正是我想要的实现,我查看了这个页面的jQuery代码。你能解释一下,你在做什么。 – user1144616 2012-02-04 03:55:41

+0

通过查看页面源文件来下载该源代码。 – Dotnet 2012-02-04 03:56:45

+0

添加了链接以下载源代码检查 – Dotnet 2012-02-04 03:57:51

0

我做的你有你的jsfiddle什么叉子:http://jsfiddle.net/DukyJ/

如果你在看代码我只是添加了一个额外的div来获得页面的内容,所以我不必分配点击甚至仅仅是对整个身体而言。 然后,我删除了返回false和stopProppagation,并在href中添加了一个'#'链接,因为它不是必需的。 最后,只是在signin链接和singin面板中添加了一些样式,以便您可以看到菜单显示在内容上,因为我认为您希望它显示。

+0

在下拉菜单中的控件仍然无法正常工作。例如,尝试检查“记住我”复选框,它将无法工作。同样,如果您添加“忘记密码”或“立即注册”链接(取代“#”),它将不起作用。似乎是因为'event.preventDefault();'。 – user1144616 2012-02-06 02:12:06

+0

@ user1144616我可以看到。最简单的方法是在复选框上捕获mouseup和keyup事件(因为复选框似乎是唯一受影响的),并手动检查/取消选中它。再次尝试jsfiddle链接以查看它。 – 2012-02-06 02:47:42