如何使用Jquery查找标记的叔叔

时间:2011-06-22 14:08:18

标签: jquery

当我点击li标签中的锚点时,我想识别它前面的h3标签的索引。例如,如果我点击概述,我想获得简介索引。我如何用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>

5 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:4)

如果你想要索引,你可以从点击的点获得之前的所有h3

类似的东西:

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

当有2个元素时会返回2,所以你的索引是前一个h3减去1的长度。

答案 2 :(得分:2)

你可以尝试

$('.navigation a').click(function(){
  var uncle = $(this).parents(".navigation").prev('h3');
  ...
});

答案 3 :(得分:1)

这应该工作

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

答案 4 :(得分:1)

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

jsFiddle