我正在尝试使用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
...
...
答案 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")