com web/php: Fixed a couple of problems with the mega drop-down menu. It no longer requires two clicks to switch the current menu when the current
menu has no sub-menu. Also, fixed an issue where repeatedly clicking the same link could break the dom (we now ignore clicks while animating).:
js/common.js
| From: | Paul Dragoonis | Date: | Tue, 04 Jan 2011 05:38:14 +0000 |
| Subject: | com web/php: Fixed a couple of problems with the mega drop-down menu. It no longer requires two clicks to switch the current menu when the current menu has no sub-menu. Also, fixed an issue where repeatedly clicking the same link could break the dom (we now ignore clicks while animating).: js/common.js |
||
| Groups: | php.webmaster | ||
| Request: | Send a blank email to php-webmaster+get-23659@lists.php.net to get a copy of this message | ||
Commit: a2e36f773d27b3c41165cc6117190d880658a0fa
Author: Stewart Lord <stewartlord@php.net> Tue, 4 Jan 2011 05:38:14 +0000
Parents: 30309559e2cb1af6f90eb02bfec66deb6ceae62b
Branches: master
Link: http://git.php.net/?p=web/php.git;a=commitdiff;h=a2e36f773d27b3c41165cc6117190d880658a0fa
Log:
Fixed a couple of problems with the mega drop-down menu. It no longer requires
two clicks to switch the current menu when the current menu has no sub-menu.
Also, fixed an issue where repeatedly clicking the same link could break the
dom (we now ignore clicks while animating).
Changed paths:
M js/common.js
Diff:
diff --git a/js/common.js b/js/common.js
index 7d75c9b..72d5782 100644
--- a/js/common.js
+++ b/js/common.js
@@ -6,27 +6,35 @@ $(document).ready(function() {
event.preventDefault();
var clickedMenu = $(this);
- var activeMenu = $('#headmenu li.current');
var container = $('#mega-drop-down #menu-container');
+ // ignore clicks if we're busy.
+ if (container.hasClass('busy')) return;
+ container.addClass('busy');
+
// function to activate the clicked menu.
var activate = function(){
clickedMenu.addClass('current');
clickedMenu.find("div.children").appendTo(container);
- container.find("div.children").slideUp(0).slideDown("fast");
+ container.find("div.children").slideUp(0).slideDown("fast",
+ function(){ container.removeClass('busy'); }
+ );
};
// if there is an active menu, deactivate it first.
+ var activeMenu = $('#headmenu li.current');
+ var activeSubMenu = container.find("div.children");
if (activeMenu.length) {
activeMenu.removeClass('current');
- var children = container.find("div.children");
- if (children) {
- children.slideUp('fast', function(){
- children.appendTo(activeMenu);
- if (activeMenu[0] != clickedMenu[0])
- activate();
- });
- }
+ }
+ if (activeSubMenu.length) {
+ activeSubMenu.slideUp('fast', function(){
+ activeSubMenu.appendTo(activeMenu);
+ if (activeMenu[0] != clickedMenu[0])
+ activate();
+ else
+ container.removeClass('busy');
+ });
} else {
activate();
}