2011-03-04 2 views
0

일부 이미지를 필터링하기 위해 quicksand 스크립트를 테스트하고 있습니다.Jquery Quicksand filter + prettyphoto가 Ajax 로딩 컨텐츠를 처리하지 못함

일부 이미지 DEMO HERE으로 스크립트를 구현했습니다.
보시다시피 원, 오각형 및 다른 색상의 triagle이 있습니다.
필터는이 인라인 스크립트에 잘 TNX를 작동 : 나는 또한 라이트 박스 효과 prettyphoto 스크립트를 포함했다

<script type="text/javascript" charset="utf-8"> 
    (function($) { 
     $.fn.sorted = function(customOptions) { 
      var options = { 
       reversed: false, 
       by: function(a) { 
        return a.text(); 
       } 
      }; 
      $.extend(options, customOptions); 

      $data = $(this); 
      arr = $data.get(); 
      arr.sort(function(a, b) { 

       var valA = options.by($(a)); 
       var valB = options.by($(b)); 
       if (options.reversed) { 
        return (valA < valB) ? 1 : (valA > valB) ? -1 : 0;    
       } else {   
        return (valA < valB) ? -1 : (valA > valB) ? 1 : 0; 
       } 
      }); 
      return $(arr); 
     }; 

    })(jQuery); 

    $(function() { 

     var read_button = function(class_names) { 
     var r = { 
      selected: false, 
      type: 0 
     }; 
     for (var i=0; i < class_names.length; i++) { 
      if (class_names[i].indexOf('selected-') == 0) { 
      r.selected = true; 
      } 
      if (class_names[i].indexOf('segment-') == 0) { 
      r.segment = class_names[i].split('-')[1]; 
      } 
     }; 
     return r; 
     }; 

     var determine_sort = function($buttons) { 
     var $selected = $buttons.parent().filter('[class*="selected-"]'); 
     return $selected.find('a').attr('data-value'); 
     }; 

     var determine_kind = function($buttons) { 
     var $selected = $buttons.parent().filter('[class*="selected-"]'); 
     return $selected.find('a').attr('data-value'); 
     }; 

     var $preferences = { 
     duration: 800, 
     easing: 'easeInOutQuad', 
     adjustHeight: false 
     }; 

     var $list = $('#list'); 
     var $data = $list.clone(); 

     var $controls = $('ul.splitter ul'); 

     $controls.each(function(i) { 

     var $control = $(this); 
     var $buttons = $control.find('a'); 

     $buttons.bind('click', function(e) { 

      var $button = $(this); 
      var $button_container = $button.parent(); 
      var button_properties = read_button($button_container.attr('class').split(' '));  
      var selected = button_properties.selected; 
      var button_segment = button_properties.segment; 

      if (!selected) { 

      $buttons.parent().removeClass('selected-0').removeClass('selected-1').removeClass('selected-2').removeClass('selected-3').removeClass('selected-4').removeClass('selected-5').removeClass('selected-6'); 
      $button_container.addClass('selected-' + button_segment); 

      var sorting_type = determine_sort($controls.eq(1).find('a')); 
      var sorting_kind = determine_kind($controls.eq(0).find('a')); 

      if (sorting_kind == 'all') { 
       var $filtered_data = $data.find('li'); 
      } else { 
       var $filtered_data = $data.find('li.' + sorting_kind); 
      } 

      if (sorting_type == 'size') { 
       var $sorted_data = $filtered_data.sorted({ 
       by: function(v) { 
        return parseFloat($(v).find('span.colore').text()); 
       } 
       }); 
      } else { 
       var $sorted_data = $filtered_data.sorted({ 
       by: function(v) { 
        return $(v).find('strong').text().toLowerCase(); 
       } 
       }); 
      } 

      $list.quicksand($sorted_data, $preferences); 

      } 

      e.preventDefault(); 
     }); 

     }); 

     var high_performance = true; 
     var $performance_container = $('#performance-toggle'); 
     var $original_html = $performance_container.html(); 

     $performance_container.find('a').live('click', function(e) { 
     if (high_performance) { 
      $preferences.useScaling = false; 
      $performance_container.html('CSS3 scaling turned off. Try the demo again. <a href="#toggle">Reverse</a>.'); 
      high_performance = false; 
     } else { 
      $preferences.useScaling = true; 
      $performance_container.html($original_html); 
      high_performance = true; 
     } 
     e.preventDefault(); 
     }); 
    }); 
</script> 

.

문제는 필터를 사용한 후에 prettyphoto 스크립트가 작동을 멈추는 것입니다. 이것이 AJAX 재로드 콘텐츠로 인해 발생한 것입니다.
나는 prettyphoto as explained also on the prettyphoto official forum

내가

function reloadPrettyPhoto() { 
$(".pp_pic_holder").remove(); 
$(".pp_overlay").remove(); 
$(".ppt").remove(); 
    $("a[rel^='prettyPhoto']").prettyPhoto(); 

} 

와 노력 "다시로드"필요하고 자연스럽게 결과없이 ...

$list.quicksand($sorted_data, $preferences); 

     } 
// Try to reload prettyphoto 
reloadPrettyPhoto(); 
e.preventDefault(); 

    }); 

후, 라인 (112) 주변의 함수를 호출 :(

나는 또한 tryed도 함께 :

jQuery.ajaxStop(function(){ 
    $("a[rel^='prettyPhoto']").prettyPhoto(); 
    }); 

하지만 아무 것도 없습니다.

나는

jQuery.ajaxStop(function(){ 
// Code to be run. 
}); 

뿐만 아니라 포럼 사용자가 도움을 사전에

TNX 추천 내 스크립트를 사용하는 방법을 이해할 수 없다!

답변

1

Quicksand 콜백에서 prettyPhoto를 호출 해 보았습니까? 여기

이 무덤 웹 사이트에서 예입니다 : 내가 무덤에 좋은 경험과 www.lovecreativity.co.uk에면 그것을 따라 다른 일을 한

$('#source').quicksand($('#destination li'), { 
    name: value 
}, function() { 
    // callback code 
}); 

- 그 모든 당신을 할 수 있는지?

행운을 빌어 요 당신은 참으로 필요

+0

안녕하세요! 당신의 대답은 Tnx. 나는 여전히 10 일 동안 갇혀있다. (나는 getacoder에 대해서도 js 전문가에게 문제를 해결하도록 도와달라고 부탁했다. 어떤 결과 든. 나는이 줄을 스크립트의이 부분을 줄 112'코드 '} $의 list.quicksand ($ sorted_data, $ 환경 설정) } 가' – pmalerba

+0

을 code'하지만이 기능에 대한 콜백을 소개하는 방법을 알고하지 않습니다.!/ – pmalerba

7

prettyPhoto 한 번 무덤 실행했다가 다시 초기화합니다.

난 당신 예제 페이지를 가져다가 그 라인 수정 :

$list.quicksand($sorted_data, $preferences); 

가되기 위해 :

$list.quicksand($sorted_data, $preferences, function(){ $("a[rel^='prettyPhoto']").prettyPhoto(); }); 

이 방법마다 콘텐츠 필터링, prettyPhoto가 새로 고침됩니다.

현재 작업을 볼 수 있습니다 당신은

$list.quicksand($sorted_data, $preferences, function(){ $("a[rel^='prettyPhoto']").prettyPhoto(); }); 

과 및 코드 검사에

$list.quicksand($sorted_data, $preferences); 

를 교체하려고한다, http://no-margin-for-errors.com/demos/quicksand/quicktest.html

감사

+0

와우 Scaron이 굉장 TNX! – pmalerba

+0

OP에서 '답변 됨'투표가 필요합니다. – RCNeil

0

scaron 말했듯이 그 당신의 rel 속성은 "prettyPhoto"대신에 "prettyphoto"라고 읽습니다. Ital P, 아마도 그것은 단지 그것일까요?