Скрыть родителя, если все дети не видны jquery

0

Я пытаюсь использовать coffeescript, чтобы скрыть заголовок группы, если все ли под ним скрыты, но это не работает. Журнал сообщает мне, что даже когда у каждого ли есть display:none них не отображается. (т.е. это выбор всех lis, когда нужно выбирать только те, которые видны)

filterGroups = () ->
  $('.group').each (idx, item) ->
    list = $(item).find("ul.bordered-list li:visible")
    console.log list.length
    if list.length == 0
      $(item).hide()
    else
      $(item).show()

Структура HAML выглядит так:

ul.bordered-list
  li.group
    h3.group-name-header
    ul.bordered-list
      li
    ...
  ...
  • 0
    Я просто поиграл с этим и работает как шарм: jsfiddle.net/invernizzie/LnGuT Какой у вас целевой браузер / среда выполнения?
Теги:
haml
coffeescript

1 ответ

1

Аргументами для .each() являются .each(idx, Element), а не .each(Element, idx);

filterGroups = () ->
  $('.group').each (idx, item) -> //correct argument order
    list = $(item).find("ul.bordered-list li:visible")
    console.log list.length
    if list.length == 0
      $(item).hide()
    else
      $(item).show()

Вы также можете использовать this ключевое слово:

$('.group').each () ->
        list = $(this).find("ul.bordered-list li:visible")
  • 0
    Извините, это была опечатка. Я правильно понял в коде, и я отредактировал свой вопрос.
  • 0
    Моя проблема в том, что хотя элементы li скрыты, они выбираются и добавляются в список

Ещё вопросы

Сообщество Overcoder
Наверх
Меню