Javascript 同位素过滤回调-当多个容器具有相同类时如何定位

Javascript 同位素过滤回调-当多个容器具有相同类时如何定位,javascript,jquery,wordpress,filter,jquery-isotope,Javascript,Jquery,Wordpress,Filter,Jquery Isotope,我用同位素过滤。它工作正常。然而,我遇到了一个回调函数的问题,这可能只是一个基本的jquery问题,而不是一个同位素问题 我在同一页上有多个同位素容器,每个容器都有相同的类别(“.products”)。它们必须被分解成不同的容器,因为有不同的部分,并且它们必须具有相同的类(容器是在wordpress中动态创建的)。它们都由同一组过滤器控制。所有这些都很好。但是,我现在想在特定过滤器组合没有结果时添加一条“找不到结果”消息 我在每个容器的开头添加了一个“.noresults”项,不透明度为0。然后

我用同位素过滤。它工作正常。然而,我遇到了一个回调函数的问题,这可能只是一个基本的jquery问题,而不是一个同位素问题

我在同一页上有多个同位素容器,每个容器都有相同的类别(“.products”)。它们必须被分解成不同的容器,因为有不同的部分,并且它们必须具有相同的类(容器是在wordpress中动态创建的)。它们都由同一组过滤器控制。所有这些都很好。但是,我现在想在特定过滤器组合没有结果时添加一条“找不到结果”消息

我在每个容器的开头添加了一个“.noresults”项,不透明度为0。然后,我尝试在“.noresults”div的容器中没有其他项的情况下显示该div。像这样:

$container = $('.products');

$container.isotope({ 
    filter: comboFilter,
    onLayout: function() {
         if ( $('.products').length < 2 ) { 
             $(this).find('.noresults').addClass('showme'); 
         } else {
             $(this).find('.noresults').removeClass('showme');
         }
    }
});
$container=$('.products');
$container.同位素({
过滤器:组合过滤器,
onLayout:function(){
如果($('.products')。长度<2){
$(this.find('.noresults').addClass('showme');
}否则{
$(this.find('.noresults').removeClass('showme');
}
}
});
不幸的是,它显示的是所有.noresults项,而不仅仅是空的.products容器中的项。因此,一旦任何容器为空,它就会将该类添加到ALL.noresults divs

如何仅针对空容器中的.noresults div

更新:我用下面第一个答案中的代码制作了一支代码笔,因此您可以看到发生了什么:

$(“.products”)。长度表示匹配结果的数量。它将始终返回文档中.products容器的编号。您应该使用$(this.children().length作为条件。尝试这样实现:

onLayout: function($ele){
    var $this = $(this),visibleItemNum = $this.children().length - $this.children("[class*=isotope-hidden]").length;  //container reference

    if(visibleItemNum<3){
        $this.find(".noresults").addClass("showme");
    }else{
        $this.find(".noresults").removeClass("showme");
    }
}
onLayout:函数($ele){
var$this=$(this),visibleItemNum=$this.children().length-$this.children(“[class*=同位素隐藏]”).length;//容器引用

if(VisibleItemNum感谢您的帮助。不幸的是,这也不太管用。如果您想知道发生了什么,我使用您的代码制作了一个代码笔?(出于测试目的,我将“未找到结果”不透明度设置为0.1而不是0。)请注意,在过滤掉同位素项目后,它不会从容器中移除。因此,您需要使用[class*=Sototype hidden]获取过滤后的项目选择器。此外,您需要确保空的指示符项“.noresult”不能被过滤掉,这意味着您必须将所有类型类分配给它。这是工作。谢谢!这对我帮助很大。