Как найти абсолютный индекс () с помощью jQuery?

<nav>
    <section>
        <aside>
    <div class="findthis">111111</div>
    <div class="findthis">222222</div>
    <div class="findthis">333333</div>  
    <div class="findthis">444444</div>
        </aside>
    </section>
</nav>


$('.findthis').each( function(){
      var index = $(this).index()+1;
      $(this).append(" ( this element = "+index+" )")
});

это работает! ( http://jsfiddle.net/3c5TZ/)

но.... когда я делаю / вставляю больше HTML-тегов, как это...

<nav>
    <section>
        <aside>
    <div class="findthis">111111</div>
            <h2><h2>
    <div class="findthis">222222</div>
            <span></span>
    <div class="findthis">333333</div>
            <b></b>                          
    <div class="findthis">444444</div>
        </aside>
    </section>
</nav>

это терпит неудачу! ( http://jsfiddle.net/3c5TZ/1/)

Есть идеи?

5 ответов

Решение

Пожалуйста, обратитесь к документацииindex(), В вашем примере jQuery не может точно знать, какой индекс вы ищете, относительно чего?

Одним из способов сделать это является предоставление селектора для .index():

$('.findthis').each( function(){
      var index = $(this).index('.findthis')+1;
      $(this).append(" ( this element = "+index+" )")
});

jsFiddle Demo

Другой (в данном случае, возможно, более эффективный) способ - запустить index() на всю коллекцию и передать элемент в качестве параметра:

var $collection = $('.findthis');
$collection.each( function(){
      var index = $collection.index(this)+1;
      $(this).append(" ( this element = "+index+" )")
});

jsFiddle Demo

Индекс передается в .each() метод, вам не нужно изобретать велосипед:

$('.findthis').each( function(index){
    $(this).append(" ( this element = " + (index + 1) + " )")
});

Обновленная скрипка.

Вы случайно вложили элементы друг в друга.

Изменить это:

<h2><h2>

к этому:

<h2></h2>

Тогда это работает просто отлично. Демо: http://jsfiddle.net/Guffa/3c5TZ/14/

Использование .index('.findthis') ограничить подсчет только внутри списка .findthis Предметы.

демо на http://jsfiddle.net/3c5TZ/5/

также исправлено пропавшее </h2> ошибка

$('.findthis').each( function(i){
  $(this).append(" ( this element = "+i+" )")
});

Попробуй это...

Другие вопросы по тегам