2

我有相同类的 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.. 等等

更新如果单击的元素是帖子 div 中的子锚点而不是帖子 div 直接,我如何获得相同的结果?

4

3 回答 3

8

尝试index方法this作为参数:

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

演示:http: //jsfiddle.net/Nryf3/

于 2012-05-23T18:44:53.800 回答
1
var posts = $('.post').click(function(){
    alert(posts.index(this));
});

演示:http: //jsfiddle.net/paZ2e/

于 2012-05-23T18:43:35.970 回答
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
});
于 2012-05-23T18:45:01.157 回答