У меня есть вложенный список.
Nav-ul скрыт, если вы не находитесь на этой странице, и в этом случае jQ добавляет выбранный класс.
Я написал скрипт jQuery для обработки выделения текущего местоположения, но у меня возникли проблемы с сокрытием nav-ul при наведении курсора на верхний уровень li.
Элемент 1 | Элемент 2 | Элемент 3 |
Элемент 1.1 | Элемент 1.2 | Элемент 1.3 |
<ul id="nav">
<li><a href="one.html">Item 1</a>
<ul class="nav-ul selected">
<li>Item 1.1</li>
<li>Item 1.2</li>
<li>Item 1.3</li>
</ul>
</li>
<li><a href="two.html">Item 2</a>
<ul class="nav-ul">
<li>Item 2.1</li>
<li>Item 2.2</li>
<li>Item 2.3</li>
</ul>
</li>
<li><a href="three.html">Item 3</a>
<ul class="nav-ul">
<li>Item 3.1</li>
<li>Item 3.2</li>
<li>Item 3.3</li>
</ul>
</li>
</ul>
Надеюсь, что это имеет смысл ...
Пожалуйста, прости мой код, это моя первая попытка jQuery.
$(function(){
var pathFileName = (location.pathname); // Gets the path and filename from the URL. Includes the leading slash
// eg:/water/index.shtml
// $('#alert').append(pathFileName + '<br />');
var splitPath = location.pathname.split("/"); // split pathFileName at the '/' into an array
var i = pathFileName.length-1;
/* add index.shtml if pathFileName ends in slash */
if (pathFileName.substr(i) == '/'){
pathFileName = pathFileName + 'index.shtml';
}
var mainSelector = "#horizontalNavigation"; // The id of the first level ul
var subSelector = ".nav-ul"; // The class of the second level ul
if ( pathFileName ) {
if (splitPath.length >= 1){
var pathOnly = "";
for (var i=0; i < splitPath.length-1; i++){ // Rebuild the path from the array without the filename
pathOnly += splitPath[i]; // eg:/water/
pathOnly += "/";
}
var fullPath = (pathOnly + 'index.shtml'); // Add index.shtml the path
/* Fix for the Design Rainfalls bug*/
if (splitPath[2] == 'designRainfalls'){
var pathOnly = "";
for (var i=0; i < 3; i++){
pathOnly += splitPath[i];
pathOnly += "/";
}
var fullPath = (pathOnly + 'index.shtml'); // Make the path /water/designRainfalls/index.shtml
}
if (fullPath != pathFileName){
/* Highlights the currently selected first level tab */
$(mainSelector + ' a[@href^="' + pathOnly + '"]').parents('li').children('a').addClass('current');
/* Shows the second level nav */
$(mainSelector + ' a[@href^="' + fullPath + '"]').parents('li').addClass('current');
}
}
/* Highlights the currently selected first level tab */
$(mainSelector + ' a[@href="' + pathFileName + '"]').parents('li').children('a').addClass('current');
/* Shows the second level nav */
$(mainSelector + ' a[@href="' + pathFileName + '"]').parents('li').addClass('current');
$('.current > ul').addClass('selected');
/* Bold selected second level item */
$('li > ul > li.current').css({fontWeight:"bold", background:"url(/water/images/l2-arrow.gif) center bottom no-repeat"});
/* Bold selected third level item */
$('#tocBody a[@href$="' + pathFileName + '"]').parents('li').addClass('tocSelected');
}
$('.nav-ul.selected').addClass('test');
});