Page Menu
Home
DevCentral
Search
Configure Global Search
Log In
Files
F4793124
jquery.foundation.topbar.js
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
5 KB
Referenced Files
None
Subscribers
None
jquery.foundation.topbar.js
View Options
/*
* jQuery Foundation Top Bar 2.0.3
* http://foundation.zurb.com
* Copyright 2012, ZURB
* Free to use under the MIT license.
* http://www.opensource.org/licenses/mit-license.php
*/
/*jslint unparam: true, browser: true, indent: 2 */
;(
function
(
$
,
window
,
undefined
)
{
'use strict'
;
var
settings
=
{
index
:
0
,
initialized
:
false
},
methods
=
{
init
:
function
(
options
)
{
return
this
.
each
(
function
()
{
settings
=
$
.
extend
(
settings
,
options
);
settings
.
$w
=
$
(
window
),
settings
.
$topbar
=
$
(
'nav.top-bar'
),
settings
.
$section
=
settings
.
$topbar
.
find
(
'section'
),
settings
.
$titlebar
=
settings
.
$topbar
.
children
(
'ul:first'
);
var
breakpoint
=
$
(
"<div class='top-bar-js-breakpoint'/>"
).
appendTo
(
"body"
);
settings
.
breakPoint
=
breakpoint
.
width
();
breakpoint
.
remove
();
if
(
!
settings
.
initialized
)
{
methods
.
assemble
();
settings
.
initialized
=
true
;
}
if
(
!
settings
.
height
)
{
methods
.
largestUL
();
}
if
(
settings
.
$topbar
.
parent
().
hasClass
(
'fixed'
))
{
$
(
'body'
).
css
(
'padding-top'
,
settings
.
$topbar
.
outerHeight
())
}
$
(
'.top-bar .toggle-topbar'
).
die
(
'click.fndtn'
).
live
(
'click.fndtn'
,
function
(
e
)
{
e
.
preventDefault
();
if
(
methods
.
breakpoint
())
{
settings
.
$topbar
.
toggleClass
(
'expanded'
);
settings
.
$topbar
.
css
(
'min-height'
,
''
);
}
if
(
!
settings
.
$topbar
.
hasClass
(
'expanded'
))
{
settings
.
$section
.
css
({
left
:
'0%'
});
settings
.
$section
.
find
(
'>.name'
).
css
({
left
:
'100%'
});
settings
.
$section
.
find
(
'li.moved'
).
removeClass
(
'moved'
);
settings
.
index
=
0
;
}
});
// Show the Dropdown Levels on Click
$
(
'.top-bar .has-dropdown>a'
).
die
(
'click.fndtn'
).
live
(
'click.fndtn'
,
function
(
e
)
{
if
(
Modernizr
.
touch
||
methods
.
breakpoint
())
e
.
preventDefault
();
if
(
methods
.
breakpoint
())
{
var
$this
=
$
(
this
),
$selectedLi
=
$this
.
closest
(
'li'
);
settings
.
index
+=
1
;
$selectedLi
.
addClass
(
'moved'
);
settings
.
$section
.
css
({
left
:
-
(
100
*
settings
.
index
)
+
'%'
});
settings
.
$section
.
find
(
'>.name'
).
css
({
left
:
100
*
settings
.
index
+
'%'
});
$this
.
siblings
(
'ul'
).
height
(
settings
.
height
+
settings
.
$titlebar
.
outerHeight
(
true
));
settings
.
$topbar
.
css
(
'min-height'
,
settings
.
height
+
settings
.
$titlebar
.
outerHeight
(
true
)
*
2
)
}
});
$
(
window
).
on
(
'resize.fndtn.topbar'
,
function
()
{
if
(
!
methods
.
breakpoint
())
{
settings
.
$topbar
.
css
(
'min-height'
,
''
);
}
});
// Go up a level on Click
$
(
'.top-bar .has-dropdown .back'
).
die
(
'click.fndtn'
).
live
(
'click.fndtn'
,
function
(
e
)
{
e
.
preventDefault
();
var
$this
=
$
(
this
),
$movedLi
=
$this
.
closest
(
'li.moved'
),
$previousLevelUl
=
$movedLi
.
parent
();
settings
.
index
-=
1
;
settings
.
$section
.
css
({
left
:
-
(
100
*
settings
.
index
)
+
'%'
});
settings
.
$section
.
find
(
'>.name'
).
css
({
'left'
:
100
*
settings
.
index
+
'%'
});
if
(
settings
.
index
===
0
)
{
settings
.
$topbar
.
css
(
'min-height'
,
0
);
}
setTimeout
(
function
()
{
$movedLi
.
removeClass
(
'moved'
);
},
300
);
});
});
},
breakpoint
:
function
()
{
return
settings
.
$w
.
width
()
<
settings
.
breakPoint
;
},
assemble
:
function
()
{
// Pull element out of the DOM for manipulation
settings
.
$section
.
detach
();
settings
.
$section
.
find
(
'.has-dropdown>a'
).
each
(
function
()
{
var
$link
=
$
(
this
),
$dropdown
=
$link
.
siblings
(
'.dropdown'
),
$titleLi
=
$
(
'<li class="title back js-generated"><h5><a href="#"></a></h5></li>'
);
// Copy link to subnav
$titleLi
.
find
(
'h5>a'
).
html
(
$link
.
html
());
$dropdown
.
prepend
(
$titleLi
);
});
// Put element back in the DOM
settings
.
$section
.
appendTo
(
settings
.
$topbar
);
},
largestUL
:
function
()
{
var
uls
=
settings
.
$topbar
.
find
(
'section ul ul'
),
largest
=
uls
.
first
(),
total
=
0
;
uls
.
each
(
function
()
{
if
(
$
(
this
).
children
(
'li'
).
length
>
largest
.
children
(
'li'
).
length
)
{
largest
=
$
(
this
);
}
});
largest
.
children
(
'li'
).
each
(
function
()
{
total
+=
$
(
this
).
outerHeight
(
true
);
});
settings
.
height
=
total
;
}
};
$
.
fn
.
foundationTopBar
=
function
(
method
)
{
if
(
methods
[
method
])
{
return
methods
[
method
].
apply
(
this
,
Array
.
prototype
.
slice
.
call
(
arguments
,
1
));
}
else
if
(
typeof
method
===
'object'
||
!
method
)
{
return
methods
.
init
.
apply
(
this
,
arguments
);
}
else
{
$
.
error
(
'Method '
+
method
+
' does not exist on jQuery.foundationTopBar'
);
}
};
// Monitor scroll position for sticky
if
(
$
(
'.sticky'
).
length
>
0
)
{
var
distance
=
$
(
'.sticky'
).
length
?
$
(
'.sticky'
).
offset
().
top
:
0
,
$window
=
$
(
window
);
$window
.
scroll
(
function
()
{
if
(
$window
.
scrollTop
()
>=
distance
)
{
$
(
".sticky"
).
addClass
(
"fixed"
);
}
else
if
(
$window
.
scrollTop
()
<
distance
)
{
$
(
".sticky"
).
removeClass
(
"fixed"
);
}
});
}
}(
jQuery
,
this
));
File Metadata
Details
Attached
Mime Type
text/html
Expires
Fri, Feb 28, 21:39 (1 d, 7 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2438084
Default Alt Text
jquery.foundation.topbar.js (5 KB)
Attached To
Mode
rTOOLS Nasqueron Tools
Attached
Detach File
Event Timeline
Log In to Comment