Как выбрать диапазон элементов в jQuery
<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
, а затем выполнить над ним .each
, но это может стать очень неэффективным, если было намного больше a
s.
Ответы
Ответ 1
jQuery slice() функция, в которой используются индексы первого и последнего необходимых элементов, выбирает подмножество согласованных элементов. Обратите внимание, что он не включает последний элемент.
В вашем конкретном случае вы должны использовать
$("#myDiv a").slice(1, 4)
Ответ 2
Использование . Функция slice() выполняет именно то, что мне нужно.
Ответ 3
Вы должны сделать это, извлекая таким образом срез массива. Это строка
$("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>