2015-09-15 3 views
0

мне было любопытно, почему:пытается получить последний ребенок в CSS, но он не работает

$("div.title").last(); 

не возвращает тот же элемент, как код CSS:

$("div.title:nth-child(0)") или $("div.title:last-child")

Я пытаюсь ссылаться на него в css, но кажется, что он, похоже, не делает этого.

HTML, выглядит следующим образом:

<div> 
    <div class="title"></div> 
    <div></div> 
    <div class="title"></div> 
    <div></div> 
</div> 
+2

'.last()' возвращает последний элемент, который соответствует селектору, ': last-child' соответствует элементу, который соответствует селектору _ и является последним child_. – Xufox

+1

Кроме того, есть ли причина, по которой вы явно указываете 'div' во всех селекторах? Это несколько противоречит хорошей практике. – Roope

+0

'$ (" div.title: last ")' ... –

ответ

1

:last-child относится только к последнему ребенку родителя (по аналогии с JQuery .last())

Однако CSS :last-of-type выбирает последнее вхождение шаблона, который, вероятно, что вы стремились сделать:

div.title:last-of-type будет выбрать тот же элемент, что Jquery $("div.title").last();

(примечание: оба эти селекторы не работают по умолчанию в IE8 или ниже)

+0

полностью основанным на принципе по типу элемента, а не по предварительно определенному селектору (если только он не связан исключительно с типом элемента – Fallenreaper

+0

'div.title: last-of-type' будет выбирать тот же элемент, что и ваш jQuery' $ ("div.title"). last(); '(плохо добавьте это в мой ответ) – Shameen

6

:last-child в CSS будет только выбрать элемент, если он является последним ребенком его родители, независимо от того элемента, класса или любого другого селектора.

В jQuery .last() будет фактически фильтроваться на коллекции элементов, которые вы получили в вашем селекторе jQuery.

+0

Итак, если бы я хотел получить ответ от чего-то такого, например, моего примера, я предполагаю, что мне нужно будет добавить id-сортировку в обертку div? – Fallenreaper

+0

Ваши варианты: 1. Добавьте класс или идентификатор к последнему элементу. 2. Измените _type_ элемента (т. Е. Раздел вместо div) и используйте ': last-of-type'. 3. Используйте jQuery – Derek

+0

. Я думаю, что рычаг тега Section был бы действительно хорошим вариантом, хотя я думаю, что я мог бы просто добавить класс к последнему элементу, если бы захотел копать. Я думаю, что плохо использовать тег раздела. – Fallenreaper

0

Причина в том, что в CSS :last-child относится к последнему ребенку родителя. Так ..

<div> 
    <div class="title"></div> 
    <div></div> 
    <div class="title"></div> 
    <div></div> 
</div> 

div.title:last-child ничего не выбрать в качестве последнего ребенка родителя div.title «s является div.

:nth-child(n) работает с той же логикой. Здесь n относится к индексу каждого дочернего элемента родителя, начинающему отсчет с 1.

last() jQuery отличается. Он выбирает последнее вхождение селектора jQuery, который был предоставлен. Таким образом, $("div.title").last(); выберет последний div.title во всем коде.

+0

Я имею в виду, это имеет смысл, конечно. Я просто пытаюсь найти какой-то запрос, который будет делать то, что я хочу. Я пытаюсь использовать больше CSS в своем коде вместо jquery. – Fallenreaper

+0

Вы хотите сказать, что хотите использовать больше селекторов CSS в своем селекторе jQuery? –

+0

да, я имею в виду, что я делаю стилизацию css и хочу отвлечь его от моего Javascript, чтобы его можно было динамически поменять – Fallenreaper