尽管包装/父元素,jQuery获取元素索引?

时间:2012-05-23 18:41:13

标签: javascript jquery

我有相同类的div,但每个3都包含在父div中。我无法按照我想要的方式获取索引。对不起,任何人都可以帮助我将索引作为0到8之间的数字..当我点击任何元素时?尽管有父元素。

以下是我测试的完整代码。

<div class="more-content">
    <div class="post">post 1</div>
    <div class="post">post 2</div>
    <div class="post">post 3</div>
</div>
<div class="more-content">
    <div class="post">post 4</div>
    <div class="post">post 5</div>
    <div class="post">post 6</div>
</div>
<div class="more-content">
    <div class="post">post 7</div>
    <div class="post">post 8</div>
    <div class="post">post 9</div>
</div>

<script type="text/javascript">
$(function() {

    // navigate posts with next/prev buttons
    $(".post").click(function(){
        alert($(this).index());
    });

});
</script>

如果我点击我得到索引0,1,2 ..我认为因为每3个项目都包裹在父项中?我是jquery的新手,任何帮助表示赞赏。我需要的是获得相同类的帖子的索引..说帖子6 =索引5 ..等等

UPDATE 如果被点击的元素是post div中的子锚点而不是post div,那么如何获得相同的结果呢?

3 个答案:

答案 0 :(得分:8)

index为参数尝试this方法:

$(".post").click(function() {
    alert($(".post").index(this));
});​

DEMO: http://jsfiddle.net/Nryf3/

答案 1 :(得分:1)

var posts = $('.post').click(function(){
    alert(posts.index(this));
});

DEMO: http://jsfiddle.net/paZ2e/

答案 2 :(得分:0)

你可以遍历标记为post的所有元素并递增一个计数器,直到找到你正在寻找的对象,如下所示:

$(".post").click(function() {
    var counter = 0;
    var that = this;

    $(".post").each(function() {
        if(that == this) break;
        counter++;
    }

    // counter now equals the index of the post element out of all posts on the page
});