GLOBAL = {
//...
//...
init:function(){
//...
//...
//wire up language selection .. assuming it will be on [nearly] all pages.
$('#glb-hdr-toolbar .heading').bind('click keypress',function(e){
if(!e.keyCode || e.keyCode == 32 || e.keyCode == 13){ //32=space, 13=enter
var p = this.parentNode;
$(p).toggleClass('open')
//keep track of open overlays so that we are able to intelligently auto-close-open-overlays
GLOBAL.overlays.pushUnique(p);
}
});
//wire up intelligent auto-close-open-overlays
// part of the convention, or 'magic', is that a className of "open" is used to control whether the overlay is 'open'.
$('body').bind('click keypress',function(e){
if(!e.keyCode || e.keyCode == 32 || e.keyCode == 13){ //32=space, 13=enter
var targ = e.target,
i = 0,
keepOpen,
list = GLOBAL.overlays.list;
///
while(targ && ++i<10){
for(var j in list){
if(targ == list[j]){
keepOpen = list[j];
}
}
targ = targ.parentNode;
}
for(var j in list){
if(keepOpen != list[j]){
$(list[j]).removeClass('open'); //or, we could just .hide() it... or similar...
}
}
}
});
},
//keep track of open overlays so that we are able to intelligently auto-close-open-overlays
overlays:{
list:[],
pushUnique:function(o){
var l = GLOBAL.overlays.list;
for(var i in l){
if(l[i] == o) return;
}
l.push(o);
}
},
//...
//...
};
Saturday, August 22, 2009
Auto-close open overlays
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment