m2u-upass-admin / WebContent / js / superfish.js @ 87:2d3c55260785
History | View | Annotate | Download (3.63 KB)
1 |
|
---|---|
2 |
/*
|
3 |
* Superfish v1.4.8 - jQuery menu widget
|
4 |
* Copyright (c) 2008 Joel Birch
|
5 |
*
|
6 |
* Dual licensed under the MIT and GPL licenses:
|
7 |
* http://www.opensource.org/licenses/mit-license.php
|
8 |
* http://www.gnu.org/licenses/gpl.html
|
9 |
*
|
10 |
* CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
|
11 |
*/
|
12 |
|
13 |
;(function($){ |
14 |
$.fn.superfish = function(op){ |
15 |
|
16 |
var sf = $.fn.superfish, |
17 |
c = sf.c, |
18 |
$arrow = $(['<span class="',c.arrowClass,'"> »</span>'].join('')), |
19 |
over = function(){ |
20 |
var $$ = $(this), menu = getMenu($$); |
21 |
clearTimeout(menu.sfTimer); |
22 |
$$.showSuperfishUl().siblings().hideSuperfishUl();
|
23 |
}, |
24 |
out = function(){ |
25 |
var $$ = $(this), menu = getMenu($$), o = sf.op; |
26 |
clearTimeout(menu.sfTimer); |
27 |
menu.sfTimer=setTimeout(function(){
|
28 |
o.retainPath=($.inArray($$[0],o.$path)>-1); |
29 |
$$.hideSuperfishUl();
|
30 |
if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);} |
31 |
},o.delay); |
32 |
}, |
33 |
getMenu = function($menu){ |
34 |
var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0]; |
35 |
sf.op = sf.o[menu.serial]; |
36 |
return menu;
|
37 |
}, |
38 |
addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); }; |
39 |
|
40 |
return this.each(function() { |
41 |
var s = this.serial = sf.o.length; |
42 |
var o = $.extend({},sf.defaults,op); |
43 |
o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){ |
44 |
$(this).addClass([o.hoverClass,c.bcClass].join(' ')) |
45 |
.filter('li:has(ul)').removeClass(o.pathClass);
|
46 |
}); |
47 |
sf.o[s] = sf.op = o; |
48 |
|
49 |
$('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() { |
50 |
if (o.autoArrows) addArrow( $('>a:first-child',this) ); |
51 |
}) |
52 |
.not('.'+c.bcClass)
|
53 |
.hideSuperfishUl(); |
54 |
|
55 |
var $a = $('a',this); |
56 |
$a.each(function(i){ |
57 |
var $li = $a.eq(i).parents('li'); |
58 |
$a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);}); |
59 |
}); |
60 |
o.onInit.call(this);
|
61 |
|
62 |
}).each(function() {
|
63 |
var menuClasses = [c.menuClass];
|
64 |
if (sf.op.dropShadows && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass); |
65 |
$(this).addClass(menuClasses.join(' ')); |
66 |
}); |
67 |
}; |
68 |
|
69 |
var sf = $.fn.superfish; |
70 |
sf.o = []; |
71 |
sf.op = {}; |
72 |
sf.IE7fix = function(){ |
73 |
var o = sf.op;
|
74 |
if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined) |
75 |
this.toggleClass(sf.c.shadowClass+'-off'); |
76 |
}; |
77 |
sf.c = { |
78 |
bcClass : 'sf-breadcrumb', |
79 |
menuClass : 'sf-js-enabled', |
80 |
anchorClass : 'sf-with-ul', |
81 |
arrowClass : 'sf-sub-indicator', |
82 |
shadowClass : 'sf-shadow' |
83 |
}; |
84 |
sf.defaults = { |
85 |
hoverClass : 'sfHover', |
86 |
pathClass : 'overideThisToUse', |
87 |
pathLevels : 1, |
88 |
delay : 800, |
89 |
animation : {opacity:'show'}, |
90 |
speed : 'normal', |
91 |
autoArrows : true, |
92 |
dropShadows : true, |
93 |
disableHI : false, // true disables hoverIntent detection |
94 |
onInit : function(){}, // callback functions |
95 |
onBeforeShow: function(){}, |
96 |
onShow : function(){}, |
97 |
onHide : function(){} |
98 |
}; |
99 |
$.fn.extend({
|
100 |
hideSuperfishUl : function(){ |
101 |
var o = sf.op,
|
102 |
not = (o.retainPath===true) ? o.$path : ''; |
103 |
o.retainPath = false;
|
104 |
var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass) |
105 |
.find('>ul').hide().css('visibility','hidden'); |
106 |
o.onHide.call($ul);
|
107 |
return this; |
108 |
}, |
109 |
showSuperfishUl : function(){ |
110 |
var o = sf.op,
|
111 |
sh = sf.c.shadowClass+'-off',
|
112 |
$ul = this.addClass(o.hoverClass) |
113 |
.find('>ul:hidden').css('visibility','visible'); |
114 |
sf.IE7fix.call($ul);
|
115 |
o.onBeforeShow.call($ul);
|
116 |
$ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); }); |
117 |
return this; |
118 |
} |
119 |
}); |
120 |
|
121 |
})(jQuery); |