Получить индекс элемента в пределах UL - PullRequest
11 голосов
/ 08 июня 2009

Используя jQuery, я бы хотел получить индекс li, где HREF содержимого тега привязки равен "#All". (В этом случае правильный результат будет 3)

<div id="tabs">
    <ul>
        <li><a href="#CPU"><span>CPU</span></a></li>
        <li><a href="#Pickup"><span>Pickup</span></a></li>
        <li><a href="#Breakfix"><span>Breakfix</span></a></li>
        <li><a href="#All"><span>All</span></a></li>
    </ul>
</div>

Я пробовал:

$("#tabs ul").index($("li a[href='#All']"))

... без удачи. Что я делаю не так?

Ответы [ 3 ]

27 голосов
/ 08 июня 2009

Это должно сделать это:

var index = $("#tabs ul li").index($("li:has(a[href='#All'])"));
  • Вы выбрали все <ul> вместо всех <li> s, из которых вы хотели получить индекс.
  • Вы должны проверить, имеет ли элемент <li> : связь с тем, что вы хотите, с помощью селектора :has, в противном случае соответствующим элементом будет сам <a> вместо <li>.

Протестировано выше , и он дает мне правильный ответ, 3, поскольку индекс основан на 0.

1 голос
/ 08 июня 2009

Вы хотите получить индекс элемента внутри другого контекста, как часть набора элементов. См. index () в документации API для получения дополнительной информации, особенно примеров.

<script type="text/javascript">
$(document).ready(function(){

    var which_index = $("#tabs ul li a").index($("a[href='#All']"));
    alert(which_index);
});
</script>

<body>
<div id="tabs">
    <ul>
        <li><a href="#CPU"><span>CPU</span></a></li>
        <li><a href="#Pickup"><span>Pickup</span></a></li>
        <li><a href="#Breakfix"><span>Breakfix</span></a></li>
        <li><a href="#All"><span>All</span></a></li>
    </ul>
</div>
</body>
1 голос
/ 08 июня 2009

Я думаю, это потому, что ваше первое правило соответствует всем элементам UL, когда вы хотите, чтобы оно совпадало со всеми элементами LI. Попробуйте:

$("#tabs ul li").index($("li a[href='#All']"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...