2012-05-23 2 views
2

У меня есть divs с тем же классом, но каждый 3 завернут в родительский div. Я не могу получить индекс так, как хочу. Прошу прощения, может ли кто-нибудь помочь мне получить индекс как число от 0 до 8 .. когда я нажимаю на любой элемент? несмотря на родительский элемент.jQuery получить индекс элемента несмотря на оболочку/родительский элемент?

Вот мой полный код для вашего тестирования.

<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 Как я могу получить тот же результат, если щелкнуть мышью элемент является дочерним якорем в посте div, а не пост div напрямую?

ответ

8

Попробуйте index метод с this в качестве аргумента:

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

ДЕМО:http://jsfiddle.net/Nryf3/

+0

возможно добавить '+ 1', чтобы отразить пост номер вместо индекса в div –

+0

@HunterMcMillen Тогда это не будет индекс. – VisioN

+0

Моя ошибка Я думал, что это то, что ищет OP –

0

Вы можете перебрать все элементы помечены пост и увеличиваем счетчик, пока не найдете объект, который вы ищете, например:

$(".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 
}); 
Смежные вопросы