我对这段代码感到沮丧。我有一个页面有几个div,其中包含无序列表,并使用jquery显示/隐藏,我已将其转换为选项卡式内容。我还有一个删除列表项的过滤器。当过滤器从选项卡中删除所有项目时,会显示一条消息,警告用户过滤器已从此选项卡中删除所有内容。删除过滤器后,仅删除活动(可见)选项卡的警告消息。过滤器有效地显示/删除非活动(隐藏)选项卡中的列表项,但我无法使警告消息消失。请看一下,谢谢你的时间:
$('div.eventContent').each( function (index, element) {
{
var these_li = $ (element).find('li.eventContentItem:visible');
if ( these_li.length > 0 )
{
$ (element).find('.noVisibleEvents').hide();
}
else
{
$(element).find('.noVisibleEvents').show();
}
these_li = 0;
}
})
答案 0 :(得分:0)
我猜你的问题可能与继承或:visible jquery选择器有关。正如文档所说,jquery会考虑隐藏隐藏父级所包含的所有元素。因此,您应该检查css 显示属性,以便在隐藏标签中的元素可见或不可见时进行稳定。 然而,代码有点复杂
$('div.eventContent').each( function () {
{
var isEmpty = true;
$(this).find('li.eventContentItem').each(function() {
if ($(this).css('display') != 'none') {
isEmpty = false;
return false; // exits the loop
}
});
if (isEmpty)
$ (this).find('.noVisibleEvents').hide();
else
$(this).find('.noVisibleEvents').show();
})