Я изучаю основы JQuery и не могу решить эту проблему: учитывая, что 3 зеленых элемента <li>
превращают 1-й и 3-й элементы в красный цвет, а 2-й элемент - оранжевый.
<!DOCTYPE html>
<html>
<head>
<title>element</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" ></script>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
<style type="text/css" media="screen">
ul li{color: green;}
</style>
</head>
<body>
<ul>
<li>text 1</li>
<li>text 2</li>
<li>text 3</li>
</ul>
<script>
var lis = $("ul li").css("color", "red");
</script>
</body>
</html>
Я смог сделать все элементы красными, но я не могу сделать 2-й апельсин: lis[1].css("color", "orange");
не работает.
Вы вызываете css на объект DOM вместо объекта jQuery, поскольку indexer []
предоставляет объект DOM. Вам нужно eq() вместо индексатора
lis.eq(1).css("color", "orange");
Описание. Уменьшите набор согласованных элементов до единицы по указанному индексу.
Вы также можете использовать : eq() непосредственно в селекторе
$("ul li:eq(1)").css("color", "red");
Вы можете добиться этого с помощью чистого CSS, применяя :nth-child
селектор :nth-child
:
ul li:nth-child(2) {
color: red;
}
напишите свой код в документе.ready() и используйте eq
для всех элементов
$(document).ready(function(){
$("ul li").css("color", "red");
});
для особого элемента
$(document).ready(function(){
$("ul li:eq(0)").css("color", "red"); //for first element
$("ul li:eq(1)").css("color", "red");//for second element
$("ul li:eq(2)").css("color", "red");//for third element
});
Поскольку вы изучаете jQuery
, вы можете использовать :even
selector:
var lis = $('ul li');
lis.filter(':even').css('color', 'red'); // Zero based indexing selects 0 and 2
lis.filter(':odd').css('color', 'orange'); // Selects 1
Обратите внимание, что из документов:
Поскольку: даже является расширением jQuery, а не частью спецификации CSS, запросы, использующие: даже не могут воспользоваться повышением производительности, предоставляемым встроенным методом запросов DOM querySelectorAll(). Чтобы добиться максимальной производительности при использовании: даже для выбора элементов, сначала выберите элементы, используя чистый селектор CSS, а затем используйте.filter(": even").
Если вы хотите выбрать только первый элемент, чем использовать это...
использовать CSS pesudo селектор: первый в типе
$ ( "Ли: первый-из-типа"). CSS ( "цвет", "апельсин");
или вы можете использовать встроенный селектор jQuery
. $ ( "Ли: первая") CSS ( "цвет", "апельсин");
Оба будут работать нормально... но метод jQuery относительно медленнее, чем CSS-селектор, поэтому используйте первый для повышения производительности.
Теперь, если вы хотите выбрать любой другой индекс, используйте .eq()
. $ (SelectorName.eq (индекс)) CSS (...);