Как найти абсолютный индекс () с помощью 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+" )")
});
Другой (в данном случае, возможно, более эффективный) способ - запустить index()
на всю коллекцию и передать элемент в качестве параметра:
var $collection = $('.findthis');
$collection.each( function(){
var index = $collection.index(this)+1;
$(this).append(" ( this element = "+index+" )")
});
Индекс передается в .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+" )")
});
Попробуй это...