2013-02-04 75 views
1

我有這樣的代碼:如何讓以前的H3標籤

<nav role="nav" id="primary-nav" class="overview"> 
    <h3 class="section active"> 
     <span class="menu-toggle open"></span> 
     <span data-content="the-basics">The Basics</span> 
    </h3> 
     <ul class="active"> 
      <li><a href="#" class="nav-link" data-content="0">Introduction</a></li> 
      <li><a href="#" class="nav-link" data-content="1">A Chapter in the Zeitgeist Movement</a></li> 
     </ul> 
    <h3 class="section"> 
     <span class="menu-toggle"></span> 
     <span data-content="setting-up-a-national-chapter">Setting up a National Chapter</span> 
    </h3> 
    <ul> 
     <li><a href="#" class="nav-link" data-content="0">Gathering Volunteers &amp; Social Media</a></li> 
    </ul> 
</nav> 

和這段JavaScript代碼

// Load page 
    $('a.nav-link').on('click', function(event) { 
     event.preventDefault(); 
     var $this = $(this); 
     var parent = this.parentNode; 
     console.log(parent); 
     var dataContent = $this.attr("data-content"); 
     console.log(dataContent); 
    }); 

什麼是獲取數據內容=「」家長的正確方法H3跨度爲這個特定的部分,例如我想返回的基本知識「基礎知識」

任何意見非常讚賞。

+0

一個的jsfiddle將是很好。 – Chris

回答

1
var dataContent = $this.closest('ul').prev('h3').find('span[data-content]').data('content'); // the-basics 
+0

'.find'需要更具體些,不是嗎? – nickf

+1

'.find('span [data-content]')'可能會更好,因爲您可能會從第一個範圍獲得數據 –

+0

@因爲您的快速響應,您絕對是真的 –

2

在你給出的例子中,這可能會工作,但它可能是一個有點脆弱到模板更改:

$this.closest('ul').prev('h3').children('[data-content]')