Как добавить пользовательский CSS для последнего дочернего элемента, только если он виден с помощью Jquery?

Я разрешаю пользователям делать части списка скрытыми/видимыми и т.д.

Теперь вот мой список:

Базовый список, но самый последний элемент списка имеет некоторый пользовательский CSS «border-bottom: none» — просто чтобы он выглядел немного красивее.

<ul>
      <li class="item">Item</li>
      <li class="widget">widget</li>
      <li class="item">Item</li>
      <li class="item">Item</li>
      <li class="widget">Widget</li>
      <li class="widget">Widget</li>
</ul>

Когда я использую селектор last для добавления пользовательского CSS, он работает идеально. Моя проблема заключается в том, что когда я скрываю виджеты, они скрыты, как и предполагалось, но для этого используется пользовательский CSS, и, поскольку они скрыты, граница все еще отображается.

Мой вопрос: как применить CSS только к последнему видимому дочернему элементу?


person Keith Donegan    schedule 06.08.2009    source источник


Ответы (1)


используйте селектор ":visible":

$("li:visible:last").css("your css rules");
person Scharrels    schedule 06.08.2009
comment
Убедитесь, что вы используете версию jQuery, которая поддерживает селектор :visible. Не могли бы вы вставить код, который вы используете? - person Scharrels; 07.08.2009
comment
Нет проблем, $(li:visible:last).css('border', '0px').css('padding-bottom', '0px').css('margin-bottom', '16px'); - person Keith Donegan; 07.08.2009
comment
О, и я использую Jquery 1.3.2 - person Keith Donegan; 07.08.2009
comment
jQuery не может установить все свойства css. «граница» может быть слишком конкретной. Попробуйте использовать $(li:visible:last).css('border-bottom', '0px solid #000'). Может быть проще добавить класс к последнему элементу, используя: $(li:visible:last).addClass(lastelement); затем вы можете добавить правила дизайна в свой файл css. - person Scharrels; 07.08.2009
comment
Эй, нет, работает нормально. Я могу просмотреть firebug, чтобы убедиться в этом. Спасибо, в любом случае - person Keith Donegan; 07.08.2009