2013-06-02 3 views
1

когда нажмите кнопку Далее будет перенаправлять к следующему литийКак использовать JQuery, чтобы получить следующую/предыдущую страницу (ы)

<div id="mainmenu"> 
    <ul id="menu"> 
     <li class="active"><a href="Home">Home</a></li> 
     <li ><a href="news">News</a></li> 
     <li ><a href="Sports">Sports</a></li> 
    </ul> 
<a href="#" class="next">next</a> 
<a href="#" class="prev">prev</a> 
+1

Ваши ссылки не имеют никакого смысла ... href = "Home"? как href = "../../Home.html"? – user1778606

+0

@ user1778606: Вполне возможно, что эти ссылки обрабатываются сервером. –

+0

@ T.J. Crowder. да, я так думаю – user1778606

ответ

3

Я предполагаю, что вы хотите, чтобы цикл через эти <li> с основаны на том, где активный класс в настоящее время?

Ну, чтобы получить следующий, вы могли бы использовать ... next метод :)

$('.next').click(function(){ 
    var $current = $('li.active'); 
    var $next = $current.next(); 
    if ($next.length){ 
     window.location = $next.find('a').attr('href'); //I assume??? 
    } else { 
     //let's wrap around to the first li in the list, per TJ's comment 
     var $wrapAroundTarget = $current.siblings().first(); 
     window.location = $wrapAroundTarget.find('a').attr('href'); 
    } 
}); 

И конечно предыдущий бы то же самое, но с prev метод вместо следующего, и, за TJ снова, чтобы обернуть до последнего <li>, просто используйте $current.siblings().last().

+0

Возможно '$ current.siblings(). first()' для обертывания? И аналогично, '$ current.siblings(). Last()' для обертывания для предыдущего? –

+0

Почему вы используете $ в своих переменных? Это соглашение для переменных jQuery или просто опечатка? – jcsanyi

+0

@jcsanyi - это соглашение для переменных, которые содержат набор результатов jQuery. –

2

Как насчет этого?

$('a.next').click(function() { 
    $('#mainmenu li.active').next().each(function() { 
     window.location = $(this).find('a').attr('href'); 
    }); 
}); 

$('a.prev').click(function() { 
    $('#mainmenu li.active').prev().each(function() { 
     window.location = $(this).find('a').attr('href'); 
    }); 
}); 

Если вы можете гарантировать, что вы не пытаетесь идти пред от первой линии или рядом с последним (путем сокрытия ссылок и т.д.), код может быть значительно упрощен:

$('a.next').click(function() { 
    window.location = $('#mainmenu li.active').next().find('a').attr('href'); 
}); 

$('a.prev').click(function() { 
    window.location = $('#mainmenu li.active').prev().find('a').attr('href'); 
}); 
Смежные вопросы