Das Plugin „jdMenu“ ist für jQuery gedacht und kann schnell verschachtelte Menü-Strukturen realisieren. Es wird unter http://jdsharp.us/jQuery/plugins/jdMenu/ zum Download angeboten. Als versierter Surfer mit mordernen Browsern hat man sich angewöhnt, Links per dritter Maustaste (bzw. „Mausrad-Klick“) in einem neuen Tab (bzw. Fenster) zu öffnen. Das ist etwas, was das jdMenu in der Version 1.4.1 noch nicht kann. Hier eine kleine Anleitung, wie man diesen Mangel beheben kann:
Datei: jquery.jdMenu.js
Alter Code (Zeile 35 – 60):
.bind('click.jdmenu', function(evt) {
var ul = $('> ul', this);
if ( ul.length == 1 &&
( settings.disableLinks == true || $(this).hasClass('accessible') ) ) {
showMenu( ul, settings.onAnimate, settings.isVertical );
return false;
}
// The user clicked the li and we need to trigger a click for the a
if ( evt.target == this ) {
var link = $('> a', evt.target).not('.accessible');
if ( link.length > 0 ) {
var a = link[0];
if ( !a.onclick ) {
window.open( a.href, a.target || '_self' );
} else {
$(a).trigger('click');
}
}
}
if ( settings.disableLinks ||
( !settings.disableLinks && !$(this).parent().hasClass('jd_menu') ) ) {
$(this).parent().jdMenuHide();
evt.stopPropagation();
}
})
Neuer Code:
.bind('click.jdmenu, mousedown.jdmenu', function(evt) {
var isThirdMB = evt.type == 'mousedown' && evt.which == 2;
if ( evt.type == 'mousedown' && !isThirdMB ) {
return true;
}
else {
if ( isThirdMB ) {
$('> ul', this).trigger('click');
return false;
}
}
var ul = $('> ul', this);
if ( ul.length == 1 &&
( settings.disableLinks == true || $(this).hasClass('accessible') ) ) {
showMenu( ul, settings.onAnimate, settings.isVertical );
return false;
}
// The user clicked the li and we need to trigger a click for the a
if ( evt.target == this ) {
var link = $('> a', evt.target).not('.accessible');
if ( link.length > 0 ) {
var a = link[0];
if ( !a.onclick ) {
window.open( a.href, a.target || '_self' );
} else {
$(a).trigger('click');
}
}
}
if ( settings.disableLinks ||
( !settings.disableLinks && !$(this).parent().hasClass('jd_menu') ) ) {
$(this).parent().jdMenuHide();
if ( !isThirdMB )
evt.stopPropagation();
}
})