jQuery Isotope filter to no items?

后端 未结 4 1686
星月不相逢
星月不相逢 2021-01-05 22:58

I\'m using isotope to filter a list with multiple filters where it is possible that based on a combination of certain filters no items will be displayed. In this case I wan

相关标签:
4条回答
  • 2021-01-05 23:38

    In addition, to work in Isotope 2 you have to check if it is visible/not visible instead of having the class isotope-hidden:

    Like this

    var numItems = $('.item:visible').length;
    
    0 讨论(0)
  • 2021-01-05 23:52

    Just to add to what nspace said...

    You don't need to add the 'reLayout' callback, you can make the callback in the code you already had here $container.isotope({ filter: filters }); like this:

    $container.isotope({ filter: filters }, function noResultsCheck() {
        var numItems = $('.item:not(.isotope-hidden)').length;
            if (numItems == 0) {
            alert("There are no results");
        }
    });
    

    http://jsfiddle.net/xvU8D/33/

    This is taken from the docs here: http://isotope.metafizzy.co/docs/introduction.html#script - do a page search for 'callback'.

    0 讨论(0)
  • 2021-01-05 23:54

    Just found a great solution at isotopes github issue-page.


    Isotope v1:

    $container.isotope({ filter: '.my-crazy.awesome.filter' });
    
    
    if ( !$container.data('isotope').$filteredAtoms.length == 0) {
        // do stuff when no element was found
    }
    

    See Isotope Help - accessing the instance


    Isotope v2

    if ( !$container.data('isotope').filteredItems.length == 0) {
        // do stuff when no element was found
    }
    

    See Isotope - Filtered Items


    see full post here

    0 讨论(0)
  • 2021-01-05 23:57

    You can could to see how many isotope items do not have the "isotope-hidden" class added to it. When the result is 0, it means that all of your elements will be hidden and you can trigger something to happen. You could use a callback function, like reLayout to run every time the isotope gets filtered.

    function noResultsCheck() {
        var numItems = $('.item:not(.isotope-hidden)').length;
        if (numItems == 0) {
            //do something here, like turn on a div, or insert a msg with jQuery's .html() function
            alert("There are no results");
        }
    }
    

    Add this to your change function:

    $container.isotope( 'reLayout', noResultsCheck );
    

    http://jsfiddle.net/xvU8D/

    0 讨论(0)
提交回复
热议问题