вопрос jquery css3

#jquery #css

#jquery #css

Вопрос:

Есть ли способ написать это более элегантно??

 $("li.list_restaurant_item:nth-child(1)").css("background-color", "#FBE9E7");
$("li.list_restaurant_item:nth-child(1)").css("padding", "4px");
$("li.list_restaurant_item:nth-child(2)").css("background-color", "#FBE9E7");
$("li.list_restaurant_item:nth-child(2)").css("padding", "4px");
$("li.list_restaurant_item:nth-child(3)").css("background-color", "#FBE9E7");
$("li.list_restaurant_item:nth-child(3)").css("padding", "4px");
  

Комментарии:

1. Это должно быть сделано для каждого из элементов в списке или всегда только для первых трех?

Ответ №1:

Я бы пошел:

 $("li.list_restaurant_item:nth-child(1)").addClass('someClass')
  

Таким образом, вы можете извлечь весь CSS из вашего JS.

Комментарии:

1. $(«li.list_restaurant_item:lt(3)»).addClass(‘listPageHighlights’);

Ответ №2:

вы можете написать:

 $("li.list_restaurant_item").slice(0, 3).css({"background-color": "#FBE9E7", "padding": "4px");
  

Ответ №3:

По крайней мере, вы можете избежать избыточных поисковых запросов:

 $("li.list_restaurant_item:nth-child(1), li.list_restaurant_item:nth-child(2), li.list_restaurant_item:nth-child(3)").css({
    "background-color": "#FBE9E7",
    "padding", "4px"
});
  

Или, в зависимости от вашей разметки, это может сделать :lt селектор:

 $("li.list_restaurant_item:lt(3)").css({
    "background-color": "#FBE9E7",
    "padding", "4px"
});
  

Обратите внимание, что в отличие от :nth-child , :lt индексы 0 основаны на, и поэтому приведенное выше соответствует первым трем элементам ( 0 , 1 и 2 ).

Ответ №4:

Весь объем рассматриваемой задачи должен быть четко определен, но вы могли бы сделать это более понятным, создав стиль и добавляя / удаляя его по мере необходимости.

Создайте повторно используемый стиль:

 .MyStyleClass { background-color:#FBE9E7; padding:4px; }
  

Добавьте класс по мере необходимости для каждого элемента:

 $("li.list_restaurant_item:nth-child(1)").addClass("MyStyleClass");
$("li.list_restaurant_item:nth-child(2)").addClass("MyStyleClass");
$("li.list_restaurant_item:nth-child(3)").addClass("MyStyleClass");
  

Если это должно быть сделано для всех элементов в списке, то, возможно, вы могли бы использовать each метод для элемента списка. Что-то вроде этого может помочь:

 $.each($("li.list_restaurant_item").children(), function () {
    $(this).addClass("MyStyleClass");
});