Current File : /home/k/a/r/karenpetzb/www/items/category/TinyNav.tar |
tinynav.js 0000604 00000004316 15071137240 0006572 0 ustar 00 /*! http://tinynav.viljamis.com v1.1 by @viljamis */
(function ($, window, i) {
$.fn.tinyNav = function (options) {
// Default settings
var settings = $.extend({
'active' : 'selected', // String: Set the "active" class
'header' : '', // String: Specify text for "header" and show header instead of the active item
'label' : '' // String: sets the <label> text for the <select> (if not set, no label will be added)
}, options);
return this.each(function () {
// Used for namespacing
i++;
var $nav = $(this),
// Namespacing
namespace = 'tinynav',
namespace_i = namespace + i,
l_namespace_i = '.l_' + namespace_i,
$select = $('<select/>').attr("id", namespace_i).addClass(namespace + ' ' + namespace_i);
if ($nav.is('ul,ol')) {
if (settings.header !== '') {
$select.append(
$('<option/>').text(settings.header)
);
}
// Build options
var options = '';
$nav
.addClass('l_' + namespace_i)
.find('a')
.each(function () {
options += '<option value="' + $(this).attr('href') + '">';
var j;
for (j = 0; j < $(this).parents('ul, ol').length - 1; j++) {
options += '- ';
}
options += $(this).text() + '</option>';
});
// Append options into a select
$select.append(options);
// Select the active item
if (!settings.header) {
$select
.find(':eq(' + $(l_namespace_i + ' li')
.index($(l_namespace_i + ' li.' + settings.active)) + ')')
.attr('selected', true);
}
// Change window location
$select.change(function () {
window.location.href = $(this).val();
});
// Inject select
$(l_namespace_i).after($select);
// Inject label
if (settings.label) {
$select.before(
$("<label/>")
.attr("for", namespace_i)
.addClass(namespace + '_label ' + namespace_i + '_label')
.append(settings.label)
);
}
}
});
};
})(jQuery, this, 0);
demo.html 0000604 00000003504 15071137240 0006354 0 ustar 00 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>TinyNav.js · Convert navigation to a tiny select box on small screen</title>
<style>
/* styles for desktop */
.tinynav { display: none }
#nav .selected a, #nav2 .selected a { color: red }
/* styles for mobile */
@media screen and (max-width: 600px) {
.tinynav { display: block }
#nav, #nav2 { display: none }
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="tinynav.min.js"></script>
<script>
$(function () {
// TinyNav.js 1
$('#nav').tinyNav({
active: 'selected',
label: 'Menu'
});
// TinyNav.js 2
$('#nav2').tinyNav({
header: 'Navigation' // Writing any title with this option triggers the header
});
});
</script>
</head>
<body>
<h1>TinyNav.js</h1>
<ul id="nav">
<li><a href="http://google.com">Google</a></li>
<li class="selected"><a href="demo.html">Demo page</a></li>
<li><a href="http://bing.com">Bing</a>
<ul>
<li><a href="http://google.com">Google</a></li>
<li><a href="demo.html">Demo page</a></li>
<li><a href="http://bing.com">Bing</a></li>
<li><a href="http://yahoo.com">Yahoo</a></li>
</ul>
</li>
<li><a href="http://yahoo.com">Yahoo</a></li>
</ul>
<ul id="nav2">
<li><a href="http://google.com">Google</a></li>
<li><a href="demo.html">Demo page</a></li>
<li class="selected"><a href="http://bing.com">Bing</a></li>
<li><a href="http://yahoo.com">Yahoo</a></li>
</ul>
<p><a href="http://tinynav.viljamis.com/">See the documentation</a></p>
</body>
</html>