2015-05-01 6 views
0

У меня есть сетчатый плагин с расширяющимся содержимым, которое открывается щелчком элемента списка сетки. Слайд-шоу в окне содержимого закрывается, но мне также хотелось бы, чтобы он открывался слайд-шоу. Пожалуйста, смотрите код ниже // **. Я пытаюсь сделать mybloc.html (htmlcontent); оживить на открытом воздухе. Может ли кто-нибудь помочь с этим?Content Block Slideup On Open

Для справки, пожалуйста, посетите: http://www.oriongunning.com/demo/gridder/basic.php

/* 
* Gridder - v1.3.0 
* A jQuery plugin that displays a thumbnail grid expanding preview similar to the effect seen on Google Images. 
* http://www.oriongunning.com/ 
* 
* Made by Orion Gunning 
* Under MIT License 
*/ 
;(function($) { 

    /* CUSTOM EASING */ 
    $.fn.extend($.easing,{ 
     def:"easeInOutExpo", easeInOutExpo:function(e,f,a,h,g){if(f===0){return a;}if(f===g){return a+h;}if((f/=g/2)<1){return h/2*Math.pow(2,10*(f-1))+a;}return h/2*(-Math.pow(2,-10*--f)+2)+a;} 
    });  

    $.fn.gridderExpander = function(options) { 

     /* GET DEFAULT OPTIONS OR USE THE ONE PASSED IN THE FUNCTION */ 
     var settings = $.extend({}, $.fn.gridderExpander.defaults, options);  

     return this.each(function() { 

      var mybloc; 
      var _this = $(this); 
      var visible = false; 

      // START CALLBACK 
      settings.onStart(_this); 

      // CLOSE FUNCTION 
      function closeExpander(base, settings) { 

       // SCROLL TO CORRECT POSITION FIRST 
       if(settings.scroll){ 
        $("html, body").animate({ 
         scrollTop: base.find(".selectedItem").offset().top - settings.scrollOffset 
        }, { 
         duration: 200, 
         easing: settings.animationEasing 
        }); 
       } 

       _this.removeClass("hasSelectedItem"); 


       // REMOVES GRIDDER EXPAND AREA 
       visible = false; 
       base.find(".selectedItem").removeClass("selectedItem"); 

       base.find(".gridder-show").slideUp(settings.animationSpeed, settings.animationEasing, function() { 
        base.find(".gridder-show").remove(); 
        settings.onClosed(base); 
       }); 
      } 

      /* CLICK EVENT */ 
      _this.find(".gridder-list").on("click", function(e) { 


       e.stopPropagation(); 

       var myself = $(this); 

       /* ENSURES THE CORRECT BLOC IS ACTIVE */ 
       if (!myself.hasClass("selectedItem")) { 
        _this.find(".selectedItem").removeClass("selectedItem"); 
        myself.addClass("selectedItem"); 
       }else{ 
        // THE SAME IS ALREADY OPEN, LET"S CLOSE IT 
        closeExpander(_this, settings); 
        return; 
       } 

       /* REMOVES PREVIOUS BLOC */ 
       _this.find(".gridder-show").remove(); 



       /* SCROLL TO CORRECT POSITION FIRST */ 
       if(settings.scroll){ 
        var offset = (settings.scrollTo === "panel" ? myself.offset().top + myself.height() - settings.scrollOffset : myself.offset().top - settings.scrollOffset);    
        $("html, body").animate({ 
         scrollTop: offset 
        }, { 
         duration: settings.animationSpeed, 
         easing: settings.animationEasing 
        }); 
       } 

       /* ADD CLASS TO THE GRIDDER CONTAINER 
       * So you can apply global style when item selected. 
       */ 
       if (!_this.hasClass("hasSelectedItem")) { 
        _this.addClass("hasSelectedItem"); 


       } 

       /* ADD LOADING BLOC */ 
       var $htmlcontent = $("<div class=\"gridder-show loading\"></div>"); 
       mybloc = $htmlcontent.insertAfter(myself); 

       /* EXPANDED OUTPUT */ 
       var currentcontent = $(myself.data("griddercontent")).html(); 
       var htmlcontent = "<div class=\"gridder-padding\">"; 

         htmlcontent += "<div class=\"gridder-expanded-content\">"; 
          htmlcontent += currentcontent; 
         htmlcontent += "</div>"; 
       htmlcontent += "</div>"; 
       mybloc.html(htmlcontent); 
       // TRYING TO GET THIS CONTENT 



       // IF EXPANDER IS ALREADY EXPANDED 
       if (!visible) { 
        mybloc.find(".gridder-padding").slideDown(settings.animationSpeed, settings.animationEasing, function() { 
         visible = true; 

         /* AFTER EXPAND CALLBACK */ 
         if ($.isFunction(settings.onContent)) { 
          settings.onContent(mybloc); 
         } 
        }); 
       } else { 
        mybloc.find(".gridder-padding").fadeIn(settings.animationSpeed, settings.animationEasing, function() { 
         visible = true; 

         /* CHANGED CALLBACK */ 
         if ($.isFunction(settings.onContent)) { 
          settings.onContent(mybloc); 
         } 
        }); 
       }    
      }); 

      /* NEXT BUTTON */ 
      _this.on("click", ".gridder-nav.next", function(e) { 
       e.preventDefault(); 
       $(this).parents(".gridder-show").next().trigger("click"); 
      }); 

      /* PREVIOUS BUTTON */ 
      _this.on("click", ".gridder-nav.prev", function(e) { 
       e.preventDefault(); 
       $(this).parents(".gridder-show").prev().prev().trigger("click"); 
      }); 

      /* CLOSE BUTTON */ 
      _this.on("click", ".gridder-close", function(e) { 
       e.preventDefault(); 
       closeExpander(_this, settings); 
      }); 

     }); 
    }; 

    // Default Options 
    $.fn.gridderExpander.defaults = { 
     scroll: true, 
     scrollOffset: 30, 
     scrollTo: "panel", // panel or listitem 
     animationSpeed: 400, 

    }; 

})(jQuery); 
+0

Что-то вроде:. 'Mybloc.hide() HTML (htmlcontent) .slideOut();'? –

+0

что-то вроде этого да, к сожалению, я пробовал это безрезультатно – James

+0

Что такое «я»? –

ответ

0

Я создал fiddle из упрощенного кода, как показано ниже. Это работает, имеющий содержимое постепенно:

var myself = $('#content'); 
var $htmlcontent = $("<div class=\"gridder-show loading\"></div>"); 
var mybloc = $htmlcontent.insertAfter(myself); 

var currentcontent = 'More stuff here'; 
var htmlcontent = "<div class=\"gridder-padding\">"; 

htmlcontent += "<div class=\"gridder-expanded-content\">"; 
htmlcontent += currentcontent + "</div></div>"; 

// hide the block, add html and fade block in 
mybloc.hide().html(htmlcontent).fadeIn(2000); 
+0

Большое спасибо, отлично работает! Теперь мне просто нужно попробовать и выяснить, как использовать предыдущие и следующие ссылки влево и вправо. – James