jQuery Cycle - создание ссылок на пейджер из ссылки внутри div - PullRequest
1 голос
/ 01 ноября 2011

Я собираю навигацию для главной страницы сайта и пытаюсь заставить Cycle использовать пользовательскую ссылку на пейджер из ссылки, содержащейся в div.

Вот мой текущий код:

$('#nav-cycle').before('<ul id="nav">').cycle({ 
    fx:     'turnLeft', 
    speed:  'fast', 
    timeout: 9001,
    pagerEvent: 'click',
    pauseOnPagerHover: 1,
    pager:  '#frontpage-nav', 
    allowPagerClickBubble: true, 
    pagerAnchorBuilder: function(idx, slide) { 
         return '<li><a href="#">' + slide.title + '</a></li>';
    } 
});

Мне нужно использовать ссылку из ссылки, которая содержится в div каждого слайда, в качестве ссылки на пейджер. Я нашел вопрос, который казался похожим на этот, но без необходимости вставлять ссылку внутрь.

HTML в соответствии с запросом, со всем разделом PHP:

<div id="frontpage-nav"></div>

<div id="nav-cycle">
<div class="nav-cycle-item" title="(page title)">
<p class="nav-item-description">(page description text)</p>
<span class="page_link"><a href="(link)">(page title)</a></span>
</div>

1 Ответ

1 голос
/ 01 ноября 2011

В функции pagerAnchorBuilder «слайд» относится к текущему <div class="nav-cycle-item">.Чтобы получить href каждого тега <a> в каждом div, просто используйте селектор jQuery, чтобы найти дочернее <a> и получить его значение href:

$('#nav-cycle').before('<ul id="nav">').cycle({ 
    fx:     'turnLeft', 
    speed:  'fast', 
    timeout: 9001,
    pagerEvent: 'click',
    pauseOnPagerHover: 1,
    pager:  '#frontpage-nav', 
    allowPagerClickBubble: true, 
    pagerAnchorBuilder: function(idx, slide) { 
        var href = $(slide).children('span').children('a').attr('href');
        return '<li><a href="' + href + '">' + slide.title + '</a></li>';
    } 
});

Кстати, яЯ предполагаю, что вы пропустили закрывающий div в вашем HTML выше.

...