Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Copyright (C) 2009 Joel Sutherland.
- * Liscenced under the MIT liscense
- */
- (function($) {
- $.fn.filterable = function(settings) {
- settings = $.extend({
- useHash: true,
- animationSpeed: 1000,
- show: { width: 'show', opacity: 'show' },
- hide: { width: 'hide', opacity: 'hide' },
- useTags: true,
- tagSelector: '#portfolio-filter a',
- selectedTagClass: 'current',
- allTag: 'web'
- }, settings);
- return $(this).each(function(){
- /* FILTER: select a tag and filter */
- $(this).bind("filter", function( e, tagToShow ){
- if(settings.useTags){
- $(settings.tagSelector).removeClass(settings.selectedTagClass);
- $(settings.tagSelector + '[href=' + tagToShow + ']').addClass(settings.selectedTagClass);
- }
- $(this).trigger("filterportfolio", [ tagToShow.substr(1) ]);
- });
- /* FILTERPORTFOLIO: pass in a class to show, all others will be hidden */
- $(this).bind("filterportfolio", function( e, classToShow ){
- if(classToShow == settings.allTag){
- $(this).trigger("show");
- }else{
- $(this).trigger("show", [ '.' + classToShow ] );
- $(this).trigger("hide", [ ':not(.' + classToShow + ')' ] );
- }
- if(settings.useHash){
- location.hash = '#' + classToShow;
- }
- });
- /* SHOW: show a single class*/
- $(this).bind("show", function( e, selectorToShow ){
- $(this).children(selectorToShow).animate(settings.show, settings.animationSpeed);
- });
- /* SHOW: hide a single class*/
- $(this).bind("hide", function( e, selectorToHide ){
- $(this).children(selectorToHide).animate(settings.hide, settings.animationSpeed);
- });
- /* ============ Check URL Hash ====================*/
- if(settings.useHash){
- if(location.hash != '')
- $(this).trigger("filter", [ location.hash ]);
- else
- $(this).trigger("filter", [ '#' + settings.allTag ]);
- }
- /* ============ Setup Tags ====================*/
- if(settings.useTags){
- $(settings.tagSelector).click(function(){
- $('#portfolio-list').trigger("filter", [ $(this).attr('href') ]);
- $(settings.tagSelector).removeClass('current');
- $(this).addClass('current');
- });
- }
- });
- }
- })(jQuery);
- $(document).ready(function(){
- $('#portfolio-list').filterable();
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement