2012-05-26 3 views
1

Я пытаюсь свернуть все элементы, кроме последнего с этой линией Jquery кода:Jquery последний элемент с LT Selector

$(".message_list .message_body:lt(:last-child)").hide(); 

Ничего сворачивает с этой линией. Я пробовал:

':last child' 
:last-child 
last() 
:last 
':last' 

но ничего не дал мне последний элемент. Как я могу выбрать каждый элемент меньше, чем последний элемент? Что происходит в lt()?

+0

Используйте ': last' и, возможно, упростите свой селектор. –

+0

': lt' принимает индекс на основе нуля, а не селектор. –

+1

Наверняка .last() должен работать на это? http://api.jquery.com/last/ – Undefined

ответ

1

Попробуйте это:

$(".message_list .message_body:not(:last-child)").hide(); 

Или в зависимости от того, как структурирован ваш HTML, вам может понадобиться :last.

$(".message_list .message_body:not(:last)").hide(); 
+0

В моем случае это было второе решение. Спасибо, что поняли, что мне нужно. Работает отлично! –

+0

Без проблем, рад помочь. –

1

:lt принимает индекс нулевой основе в качестве аргумента, а не селектор. Если вы должны использовать :lt:

var items = $('.message_list .message_body'); 
var lastItem = $('.message_list .message_body:last'); 
var index = items.index(lastItem); 

$(".message_list .message_body:lt(" + index + ")").hide(); 

В противном случае, используйте @ ответ Рори.

+0

+1 для ответа на мой ответ. Пошел с Рори, потому что, как вы догадались, я не должен использовать lt() в моем случае использования в первую очередь. –

+0

Просто покрывает все основания. Я бы сам использовал ответ Рори. –

0

Вот пример скрипку вы могли бы работать из этого может помочь осмыслять один способ приблизиться к своему вопросу: http://jsfiddle.net/T5ZVE/

Он использует. not и :last.