如果所有子项都不可见,则隐藏父级jquery

时间:2014-03-25 01:37:39

标签: javascript jquery css coffeescript haml

我正在尝试使用coffeescript来隐藏组的标题,如果它下面的所有li都被隐藏了,但这不起作用。日志告诉我,即使每个li都有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
    ...
  ...

1 个答案:

答案 0 :(得分: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")