2

我正在使用 jQuery "filterable" 插件来过滤数据,这个插件最初通过点击类别的名称链接来过滤数据,现在我想将链接更改为复选框,所以如果选中复选框,则显示某个类别,如果它得到未经检查,它会隐藏。这是jQuery:

(function(jQuery) {
    jQuery.fn.filterable = function(settings) {
        settings = jQuery.extend({
            useHash: true,
            animationSpeed: 1000,
            show: { width: 'show', height: 'show', opacity: 'show' },
            hide: { width: 'hide', height: 'hide', opacity: 'hide' },
            useTags: true,
            tagSelector: '#portfolio-filter input[type=checkbox]',
            selectedTagClass: 'current',
            allTag: 'all'
        }, settings);

        return jQuery(this).each(function(){

            /* FILTER: select a tag and filter */
            jQuery(this).bind("filter", function( e, tagToShow ){
                if(settings.useTags){
                    jQuery(settings.tagSelector).removeClass(settings.selectedTagClass);
                    jQuery(settings.tagSelector + '[value=' + tagToShow + ']').addClass(settings.selectedTagClass);
                }
                jQuery(this).trigger("filterportfolio", [ tagToShow.substr(1) ]);
            });

            /* FILTERPORTFOLIO: pass in a class to show, all others will be hidden */
            jQuery(this).bind("filterportfolio", function( e, classToShow ){
                if(classToShow == settings.allTag){
                    jQuery(this).trigger("show");
                }else{
                    jQuery(this).trigger("show", [ '.' + classToShow ] );
                    jQuery(this).trigger("hide", [ ':not(.' + classToShow + ')' ] );
                }
                if(settings.useHash){

                    location.hash = '#' + classToShow;
                }
            });

            /* SHOW: show a single class*/
            jQuery(this).bind("show", function( e, selectorToShow ){
                jQuery(this).children(selectorToShow).animate(settings.show, settings.animationSpeed);
            });

            /* SHOW: hide a single class*/
            jQuery(this).bind("hide", function( e, selectorToHide ){
                jQuery(this).children(selectorToHide).animate(settings.hide, settings.animationSpeed);  
            });

            /* ============ Check URL Hash ====================*/
            if(settings.useHash){
                if(location.hash != '')
                    jQuery(this).trigger("filter", [ location.hash ]);
                else
                    jQuery(this).trigger("filter", [ '#' + settings.allTag ]);
            }

            /* ============ Setup Tags ====================*/
            if(settings.useTags){
                jQuery(settings.tagSelector).click(function(){
                    jQuery('#portfolio-list').trigger("filter", [ jQuery(this).attr('value') ]);

                    jQuery(settings.tagSelector).removeClass('current');
                    jQuery(this).addClass('current');
                });
            }
        });
    }
})(jQuery);

我正在使用“ hash”方法,因此在选中了相对复选框时,它在页面URL末尾添加了类似“ #categoryname”,然后显示与该复选框相关的一些项目,现在我想在该复选框未选中,并且还删除了该哈希。

4

0 回答 0