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..などです。

更新クリックされた要素がpostdivの子アンカーであり、post 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 に答える