2011-06-22 55 views
4

當我點擊li標籤中的錨時,我想確定它之前的h3標籤的索引。例如,如果我要點擊概述,我想獲得簡介的索引。我將如何用Jquery完成此任務?如何用jquery查找標籤的叔叔

<h3><a href="Introduction" rel="address:/Introduction">Introduction</a></h3> 
<div class="navigation primary_navigation"> 
    <ul> 
     <li><a href="purpose" rel="address:/purpose">Purpose</a></li> 
     <li><a href="overview" rel="address:/overview">Overview</a></li> 
    </ul> 
</div> 
<h3><a href="Incorporate_Learning" rel="address:/Incorporate_Learning">Incorporate Learning</a></h3> 
<div class="navigation primary_navigation"> 
    <ul> 
     <li><a href="appraise" rel="address:/appraise">Appraise</a></li> 
     <li><a href="select" rel="address:/select">Select</a></li> 
     <li><a href="define" rel="address:/define">Define</a></li> 
     <li><a href="execute" rel="address:/execute">Execute</a></li> 
     <li><a href="resources" rel="address:/resources">Resources</a></li> 
    </ul> 
</div> 

回答

4
$(function() { 
    $("li a").click(function (e) { 
     e.preventDefault(); 
     var $h3 = $(this).closest(".primary_navigation").prev(); 
     console.log($("h3").index($h3)); 
    }); 
}); 
+0

謝謝,這工作完美。現在我明白了,現在纔有意義,今天早上我無法把頭圍住它。乾杯。 Stackoverflow是一個很棒的社區。 –

+1

值得注意的是,在您的網頁上的每個H3的數組索引中,不僅僅是您的導航部分。在示例代碼中,它將起作用,但頁面上完整可能不會返回您之後的內容。 – Robert

+0

非常真實,我會確保添加類選擇器。 –

1

這應該工作

$("li").live("click", function(){ 
    alert($(this).parents('.navigation').prev().html()); 
}); 
+0

長度這是關於點擊該鏈接,而不是列表元素上 – Teneff

2

你可以嘗試

$('.navigation a').click(function(){ 
    var uncle = $(this).parents(".navigation").prev('h3'); 
    ... 
}); 
1
$('li>a').click(function(){ 
    var uncle = $(this).parents('ul').parent().prev(); 
    return false; 
}); 

jsFiddle

4

如果你想索引,你可以從點擊獲得所有以前的h3

喜歡的東西:

$(this).closest('div.navigation').prevAll('h3').length 

將返回2,當有2個元素,讓你的指數是以前H3的零下1

+0

這似乎是額外的工作來獲得索引。爲什麼不使用索引函數? – ScottE

+0

爲什麼在所有H3元素中減去一個更重要的微量元素時會碰到DOM? – Robert

+0

我明白了,好點。這是一個更好的答案。 – ScottE