Revision f37d07f4
Von Sven Schöling vor fast 13 Jahren hinzugefügt
js/dhtmlsuite/menu-for-applications.js | ||
---|---|---|
2343 | 2343 |
// }}} |
2344 | 2344 |
, |
2345 | 2345 |
unsetMenuBarState : function() { this.menuBarState = false }, |
2346 |
changeMenuBarState: function (target) { |
|
2347 |
var parentId = target.id.replace(/[^0-9]/gi,''); |
|
2348 |
this.menuBarState = !this.menuBarState; |
|
2349 |
this.hideSubMenus(); |
|
2350 |
if(this.menuBarState) { |
|
2351 |
this.__expandGroup(parentId); |
|
2352 |
} |
|
2353 |
}, |
|
2346 | 2354 |
// {{{ __setBasicEvents() |
2347 | 2355 |
/** |
2348 | 2356 |
* Set basic events for the menu widget. |
... | ... | |
2352 | 2360 |
*/ |
2353 | 2361 |
__setBasicEvents : function() |
2354 | 2362 |
{ |
2355 |
DHTMLSuite.commonObj.addEvent(document.documentElement,"click",this.hideSubMenus); |
|
2356 | 2363 |
var menu = this; |
2357 |
$(document).mousedown(function(){ menu.unsetMenuBarState(); }); |
|
2364 |
$('div.DHTMLSuite_menuBar_sub').click(function() { menu.hideSubMenus(); menu.unsetMenuBarState() }); |
|
2365 |
$('div.DHTMLSuite_menuBar_top > div > div[objectref!="0"]').click(function() { menu.changeMenuBarState(this) }); |
|
2366 |
$('div.DHTMLSuite_menuBar_top').click(function(e) { |
|
2367 |
if ($(e.target).attr('class') == 'DHTMLSuite_menuBar_top') { menu.hideSubMenus(); menu.unsetMenuBarState() } |
|
2368 |
}); |
|
2358 | 2369 |
$('#win1').load(function(){ |
2359 | 2370 |
$('#win1').contents().mousedown(function(){ |
2360 | 2371 |
menu.hideSubMenus(); |
Auch abrufbar als: Unified diff
Javascriptmenü: Eventhandling korrigiert
Der originale Ansatz war Handler einfach an irgendwas dranzuklatschen, und
durch neue zu ersetzen wenn sich ein State geändert hat.
Jetzt gibts es 3 Handler, die einen Großteil der Aufgaben übernehmen:
- changeMenuBarState (auf und zuklappen, bei Topmenü Klick)
- hideSubMenus (bei Klick auf alles, was nicht changeMenuBarState triggert)
- unsetMenuBarState (Klick auf alles was Menü unkonditional schließt)