JQuery индекс элемента в массиве селектора - PullRequest
1 голос
/ 22 сентября 2011

Я пытаюсь получить индекс элемента в массиве, возвращаемом селектором jquery.

Вот мой код:

$("div").click( function(){
  alert( $.inArray( $(this), $("#div") ) );
});

Пример для этого HTML:

<div>A</div>
<div>B</div>
<div>C</div>
<div>D</div>

Я хочу, чтобы он отображал «4», когда пользователь щелкает элемент, содержащий D. Есть ли способ сделать это?Эта функция inArray, кажется, не выполняет то, что я ожидаю, когда применяется к селекторам.

Ответы [ 4 ]

2 голосов
/ 22 сентября 2011

Вы просто хотите:

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

(Вам необходимо добавить 1 к результату вызова .index(), поскольку индекс основан на 0).

Пример: http://jsfiddle.net/andrewwhitaker/tdcVU/

0 голосов
/ 22 сентября 2011

Вот обновление вашего кода, которое будет работать -

$("div").click( function(){
  alert( $.inArray( this, $("div") ) );
});

Изменения -

  • Изменен селектор, переданный в аргумент массива inArray с #div на div
  • Передан обычный элемент DOM JavaScript, а не JQuery элемент в inArray функцию

Рабочая демоверсия - http://jsfiddle.net/ipr101/CfY8j/

0 голосов
/ 22 сентября 2011

1001 * попробовать *

.index ()

var selectedItem = $ (this); var index = $ ('div'). index (selectedItem);

0 голосов
/ 22 сентября 2011

Другой метод, который вы можете использовать, это prevAll()

alert($(this).prevAll("div").length + 1);
...