2013-04-09 2 views
0

Эта страница в настоящее время состоит из 3-х глав, каждая из которых содержится в их собственных тегах статьи. http://wlvrtn.com/sites/nms-chapters/page.phpИспользуйте jQuery для автоматизации ссылок на главы на странице?

В настоящее время эта страница состоит из трех глав. В будущем я добавлю дополнительные главы, а также ссылки на главы в плавающей главе nav.

То, что я хотел бы достичь:

Я хочу автоматизировать назначения главы нав ссылку через JQuery, так что первая ссылка в пунктах списка в первой статье на странице, второй ссылке указывает на вторую статью и т. д.

I.e., если я добавлю статью четвертой главы, я не хочу давать ей идентификатор «article-04»; Я хочу, чтобы четвертая ссылка в главе nav была добавлена, чтобы знать, что она должна указывать на новую статью. Я предполагаю, что «nth-child» играет в это, но я слишком незнаю.

Спасибо, XO


Глава Nav:

<nav id="chapters"> 
    <ul> 
    <li><a href="#">Chapter One</a></li> 
    <li><a href="#">Chapter Two</a></li> 
    <li><a href="#">Chapter Three</a></li> 
    </ul> 
</nav> 

Глава Статья:

<article class="clearfix"> 
    <h1>Chapter One</h1> 
</article> 
<article class="clearfix"> 
    <h1>Chapter Two</h1> 
    <p>And so on...</p> 
+1

Вы что-то пробовали? –

+0

Даже ваши существующие ссылки не работают. Вам нужно, чтобы некоторые селекторы были прикреплены для автоматического создания ссылок ... сначала присоедините класс к каждой из глав, а затем перечислите их, чтобы узнать общие главы. jQuery $ .each() должен вам помочь :) – theshadowmonkey

+0

@theshadowmonkey, я начинающий jQuery в самом прямом смысле. Где я могу прочитать, что вы предлагаете? – pianofighter

ответ

1

Как о чем-то вроде этого (demo)?

$(function(){ 

    // find the nav & headers 
    var nav = $('#chapters li a'), 
     articles = $('#main article > h1'); 

    // now assign an id/href to each 
    nav.each(function(i){ 
     nav.eq(i).attr('href', '#article-' + i); 
     articles[i].id = 'article-' + i; 
    }); 

}); 
+0

Фантастический! Спасибо. – pianofighter

+0

A. Как я могу облегчить это с помощью изящного свитка? B. Использование h1 статьи в качестве точки привязки - отличный старт, но мне понадобится якорь, чтобы начать примерно на 100 пикселей выше, чтобы хорошо отображать. Возможное? – pianofighter

+0

Проверьте мой [visualNav] (http://mottie.github.io/visualNav/bootstrap.html) плагин. – Mottie

0

относительно простой подход к удовлетворению ваших требований будет это, хотя это, конечно, может быть оптимизировано:

$('h1').each(
    function(){ 
     var that = $(this), 
      txt = that.text(); 
     that[0].id = txt.replace(/\s+/,''); 

     if (!$('#toc').length){ 
      $('<ul />', { id : 'toc' }).prependTo('body'); 
     } 

     var li = $('<li />').appendTo('#toc'); 
     $('<a />', {'href' : '#' + that.text().replace(/\s+/,''), text : that.text()}).appendTo(li); 
    }); 

JS Fiddle demo.

Ссылки:

Смежные вопросы