Как выбрать диапазон элементов в jQuery - PullRequest
51 голосов
/ 09 октября 2008
<div id="myDiv">
     <a>...</a>
     <a>...</a>
     <a>...</a>
     <a>...</a>
     <a>...</a>
     <a>...</a>
</div>

Если вы хотите выбрать 2-й, 3-й и 4-й a теги в приведенном выше примере, как бы вы это сделали? Единственное, о чем я могу думать, это:

$("#myDiv a:eq(1), #myDiv a:eq(2), #myDiv a:eq(3)")

Но это не выглядит очень эффективным или красивым. Я думаю, вы также можете выбрать ВСЕ a s, а затем запустить .each над ними, но это может стать очень неэффективным, если будет гораздо больше a s.

Ответы [ 3 ]

108 голосов
/ 09 октября 2008

jQuery slice () Функция, берущая индексы первого и последнего необходимых элементов, выбирает подмножество соответствующих элементов. Обратите внимание, что он не включает в себя последний элемент.

В вашем конкретном случае вы должны использовать

$("#myDiv a").slice(1, 4)
9 голосов
/ 09 октября 2008

Использование функции .slice () делает именно то, что мне нужно.

3 голосов
/ 09 октября 2008

Вы должны быть в состоянии сделать это, извлекая таким образом часть массива. Это линия

$("div[id='myDiv'] > a").slice(1,4).css("background","yellow");

, что вас интересует. Это повлияет на 2-й, 3-й и 4-й элементы.

<html>
    <head>
        <script type="text/javascript" src="jquery-1.2.6.pack.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                $("a").click(function(event){
                    $("div[id='myDiv'] > a").slice(1,4).css("background","yellow");
                    event.preventDefault();
                });
            });
        </script>
    </head>
    <body>
        <div id="myDiv">
            <a>1</a>
            <a>2</a>
            <a>3</a>
            <a>4</a>
            <a>5</a>
            <a>6</a>
        </div>
        <hr>
        <a href="" >Click here</a>
        <hr>
    </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...