【问题标题】:Pjax animationsPjax 动画
【发布时间】:2012-03-23 19:43:58
【问题描述】:

我终于让 pjax 工作了,但我还有一个问题。如何添加一些 jquery 动画,如淡出/上滑旧内容和淡入/上滑新内容?

默认情况下,pjax 只是改变内容,没有任何好看的效果..

任何帮助将不胜感激。

最好的问候

【问题讨论】:

    标签: javascript jquery ajax slide pjax


    【解决方案1】:

    我猜加载指示器和动画或多或少是一回事。在这种情况下,使用 pjax:send 和 pjax:complete 事件。

    来自pjax readme

    发送和完成是一对很好的事件,如果你是 实现加载指示器。它们只会在以下情况下被触发 实际请求是发出的,而不是从缓存中加载的。

    【讨论】:

      【解决方案2】:

      基本上,您有a bunch of events 可以锁定并随心所欲地做事。这是使用pjax:startpjax:end 作为触发器的基本fadeInfadeOut 版本。

      $(document)
        .on('pjax:start', function() { $('#main').fadeOut(200); })
        .on('pjax:end',   function() { $('#main').fadeIn(200); })
      

      显然,您可以将 #main 替换为您正在交换内容的容器元素。

      【讨论】:

      • 它在我的网站 stackoverflow.com/questions/17464641/… 中不起作用。请帮忙
      • 你可以通过将pjax:end 更改为pjax:complete 来获得更好的结果,并且为淡入和淡出设置不同的时间以避免内容闪烁。
      【解决方案3】:

      假设你想创建一个目录浏览器,就像 GitHub 一样。

      让我们从 Twitter Bootstrap 的轮播开始,创建一个带有标记的视图以使用它(希望你不介意 haml):

      这是容器:

      %div#uber-glider.glider.carousel.span12
        %div.carousel-inner
          = yield
      %div#uber-glider-stage.glider-stage(style="display:none")
      

      这是一个在其中呈现 pjaxed 内容的示例部分:

      %div.glider-group.item
        %div.glider-heading(data-title="#{@super_department.name} Super Department" data-resource="#{super_department_path @super_department.id}")
          %ul.breadcrumb
            %li
              %a.glider-link(href="#{divisions_path}")= "Divisions"
              %span.divider= "/"
            %li.active
              %a.glider-link(href="#{division_path @division.id}")= @division.name
              %span.divider= "/"
            %li.active
              = @super_department.name
        %div.glider-body
          - @super_department.departments.each_with_index do |department, i|
            %div.glider-listing
              %a.glider-link(data-glide="descend" data-target="#uber-glider" href="#{department_path department.id}")
                = department.name
      

      现在让我们用 pjax 创建一些 Javascript:

      (function($){
          "use strict";
      
        $(function() {
          $('#uber-glider-stage').on('pjax:success', function(e){
            var $incoming_group = $('#uber-glider-stage .glider-group')
              , $incoming_heading = $('#uber-glider-stage .glider-heading')
              , incoming_resource = $incoming_heading.data('resource')
              , $existing_groups = $('#uber-glider .glider-group')
              , $existing_headings = $('#uber-glider .glider-heading')
              , existing_last_idx = $existing_groups.length - 1
              , matching_idx = -1;
            $existing_headings.each(function(idx) {
              if ($(this).data('resource') === incoming_resource) {
                matching_idx = idx;
              }
            });
            if (matching_idx > -1) {
              // pop                        
              $incoming_group.remove();
              $('#uber-glider').one('slid', function() {
                for (; existing_last_idx > matching_idx; existing_last_idx--) {
                  $('#uber-glider .glider-group').last().remove();
                }
              });
              $('#uber-glider').carousel(matching_idx);
            }
            else {
              // push        
              debug.debug("pushing 1 level");
              $incoming_group.detach();
              var $container = $('#uber-glider > .carousel-inner');
              $container.append($incoming_group);
              $('#uber-glider').carousel('next');
            }
          });
      
      
          $('.glider-link').pjax('#uber-glider-stage', { 'timeout' : '3000' }).on('click', function(){
            debug.debug(".glider-link click");
          });
        });
      
        $('#uber-glider .carousel-inner .item').addClass('active');
        $('#uber-glider').carousel('pause');
      })(window.jQuery);
      

      【讨论】:

      • HAML 中的
        不需要使用 %div.cssClass,只需使用 .cssClass(默认标记为 DIV :))
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2016-09-23
      • 2014-04-13
      • 1970-01-01
      相关资源
      最近更新 更多