Как найти абсолютный индекс () с JQuery? - PullRequest
3 голосов
/ 21 февраля 2012
<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 ]

5 голосов
/ 21 февраля 2012

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

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

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

4 голосов
/ 21 февраля 2012

Пожалуйста, обратитесь к документации 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

3 голосов
/ 21 февраля 2012

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

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

<h2><h2>

к этому:

<h2></h2>

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

1 голос
/ 21 февраля 2012

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

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

также исправлена ​​недостающая ошибка </h2>

0 голосов
/ 21 февраля 2012
$('.findthis').each( function(i){
  $(this).append(" ( this element = "+i+" )")
});

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

...