svn: /web/php/trunk/js/ common.js

From: Date: Tue, 04 Jan 2011 05:38:14 +0000
Subject: svn: /web/php/trunk/js/ common.js
Groups: php.webmaster 
Request: Send a blank email to php-webmaster+get-10197@lists.php.net to get a copy of this message
stewartlord Tue, 04 Jan 2011 05:38:14 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=307058 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: U web/php/trunk/js/common.js Modified: web/php/trunk/js/common.js =================================================================== --- web/php/trunk/js/common.js 2011-01-04 05:30:18 UTC (rev 307057) +++ web/php/trunk/js/common.js 2011-01-04 05:38:14 UTC (rev 307058) @@ -6,27 +6,35 @@ 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(); }

« previous php.webmaster (#10197) next »