нужна помощь с селекторами jquery - PullRequest
3 голосов
/ 01 апреля 2010

У меня есть такой код:

<ul class="gallery_demo_unstyled">
    <li class="active"><img src='001.jpg' /></li> 
    <li><img src='002.jpg' /></li> 
    <li><img src='003.jpg' /></li> 
    <li><img src='004.jpg' /></li> 
    <li><img src='005.jpg' /></li> 
    <li><img src='006.jpg' /></li> 
</ul> 

<div class="Paginator"> 
    <a href="../2/" class="Prev">&lt;&lt;</a> 
    <a href="../1/">1</a> 
    <a href="../2/">2</a> 
    <span class="this-page">3</span> 
    <a href="../4/">4</a> 
    <a href="../5/">5</a> 
    <a href="../4/" class="Next">&gt;&gt;</a> 
</div> 

<div class="Albums"><div class="AlbumsMenu">
<p><b>ALBUMS</b></p>
    <p><a href="../../blackandwhite/1/" >blackandwhite</a></p>
    <p><a href="../../color/1/" class='this-page'>>>color</a></p>
    <p><a href="../../film/1/" >film</a></p>
    <p><a href="../../digital/1/" >digital</a></p>
    <p><a href="../../portraits/1/" >portraits</a></p>
</div></div>  

... и некоторый JavaScript / jQuery, позволяющий переключаться между изображениями (самые верхние элементы li), возвращаясь к первому изображению после последнего:

$$.nextSelector = function(selector) {
return $(selector).is(':last-child') ?
       $(selector).siblings(':first-child') :
       $(selector).next();

};

Текущая страница всегда является классом this-page (span или p в моем случае, но я могу изменить это при необходимости).

Вопрос : что я должен изменить в своем коде, чтобы он перешел после последнего изображения на следующую страницу, вместо того, чтобы перебирать страницу снова и снова и после последней страницы до следующей альбом? А к первому изображению на первой странице первого альбома после последнего-последнего-последнего (или просто остановиться - не волнует)?

1 Ответ

4 голосов
/ 01 апреля 2010

как то так:

function nextImage()
{
    var li = $('#gallery_demo_unstyled li.active');

    if (li.is(':last-child')) {
        nextPage();
    } else {
        li.removeClass('active');
        li.next().addClass('active');
    }
}

function nextPage()
{
    var next = $('div.Paginator a.Next');

    if (next.length == 0) {
        nextAlbum();
    } else {
        window.location = next.attr('href');
    }
}

function nextAlbum()
{
    var this_album = $('div.AlbumsMenu p a.this-name');
    var p = this_album.parent();

    if (p.next().length == 0) {
        return;
    }

    window.location = p.next().children('a').attr('href');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...