Функция jquery .index (), возвращающая неверный - PullRequest
1 голос
/ 06 апреля 2011

Помогите свести меня с ума .... Функция .index() не возвращает правильный индекс для меня, если у меня нет полного представления о index () неправильно:)

так что это логика позади

<div class="sections">Section 1</div>
<div class="sections">Section 2</div>
<div class="sections">Section 3</div>
<div class="sections">Section 4</div>

.sections{display:none;} //css 

$('.sections:eq(1)').show();// shows sectiond 2 text
$('.sections:visible').index();// returns 2 I expected 1

Актуальный сайт

<div class="sections">Section 1</div>
var section = $('.sections:visible').index();// returns 2
console.log($('.sections:visible').length); // returns 1
console.log($('.sections').length); // returns 1 as well since there is one section
window.location.hash = 'section-'+section;// url hash is #section-2

Ответы [ 3 ]

5 голосов
/ 06 апреля 2011

После правильного прочтения .index() http://api.jquery.com/index/ я обнаружил, что если вы укажете список в качестве атрибута, это решит проблему.

например,

<div class="wrap">
  <div>First Page</div>
  <div class="sections">Section 1</div>
  <div class="sections">Section 2</div>
  <div class="sections">Section 3</div>
  <div class="sections">Section 4</div>
  </div>Last Page</div>
</div>

использование просто $('.sections:visible').index(); вернет неверный результат как first page и last page are also included on the list (which is what I had).

, поэтому для решения этой проблемы мне пришлось сделать следующее.

$('.sections:visible').index($('.sections'));

другими словами, мыговорят, что найти индекс :visible из списка $('.selections')

надеюсь, это поможет кому-то еще :)

1 голос
/ 06 апреля 2011

Я думаю, вы что-то перепутали.Индекс 1 в массиве означает второй элемент всей коллекции.Селекторы jquery всегда возвращают массив.

Посмотрите на Visual Jquery для '.eq ()'

0 голосов
/ 17 мая 2019
$('.sections:visible').index($('.sections'));

другими словами, мы говорим: найдите индекс: видимый из списка $('.selections')

Без аргумента выдает индекс селектора. С аргументом это работает наоборот. Поскольку .sections не является частью .sections:visible, он дает -1 (не найдено).

Итак, правильный ответ:

$('.sections').index($('.sections:visible'));
...