2017-01-31 7 views
1

"추가로드"버튼이 있습니다.이 버튼을 클릭하면 검색 결과 페이지에 새 컨테이너가 추가됩니다. 각 컨테이너는로드 할 항목 수에 따라 반복하는 클래스 (예 : .results-1 .results-2.results-3)를 가져옵니다.Shuffle.js로 마지막으로 추가 된 div 만 대상으로 지정

"추가로드"를 클릭하면 새로 추가 된 항목뿐만 아니라 모든 결과가 화면에 깜박입니다. 이는 내 코드가 추가 된 것뿐만 아니라 벽돌 그리드의 모든 항목을 감지하기 때문입니다.

$('.gallery-photo [class of only most recent append goes here?]').each(function() { 

가 어떻게 가장 최근에 추가 된 항목을 타겟팅 할 수 있습니다, 각각의 새로운 용기가 반복 클래스를 얻을 때 :

이 줄은 생각 문제인가?

모든 아이디어를 매우 높이 평가합니다. 다음은 PHP가없는 fiddle의 예입니다.

$(function() { 
    $(".gallery-photo").slice(0, 4).show(); 
    $("#loadMore").on('click', function(e) { 
    e.preventDefault(); 
    $(".gallery-photo:hidden").slice(0, 4).fadeIn(); 
    $('.gallery-photo').each(function() { 
     var $newRow = $(this); 
     $('.masonry-gallery').append($newRow); 
     $('.masonry-gallery').shuffle('appended', $newRow); 
    }); 
    }); 
}); 

$(document).ready(function() { 
    var $grid = $('.masonry-gallery'); 
    $grid.shuffle({ 
    itemSelector: '.gallery-photo' // the selector for the items in the grid 
    }); 
}); 

P. 이 석조 격자는 shufflejs을 사용합니다. 비슷한 대화 here은 새 항목을 그리드에 추가하는 데 동일한 코드를 사용합니다. 당신이 지적

답변

0

는, 문제는 당신이 희미 단지 요소가 아닌 모든 요소를 ​​추가한다는 것입니다.

그 문제를 해결하려면, 당신은.fadeIn() 방법 후 .each() 방법을 을 체인 수 순서는 새로 표시되는 모든 요소를 ​​반복 및 셔플 업데이트를 트리거하려면

Updated Example

$("#loadMore").on('click', function(e) { 
    e.preventDefault(); 

    $(".gallery-photo:hidden") 
    .slice(0, 4) 
    .fadeIn() 
    .each(function() { 
     $('.masonry-gallery').shuffle('appended', $(this)); 
    }); 
}); 

아래의 의견을 바탕으로 다른 요소에서 요소를 추가하는 또 다른 대체 예가 있습니다 (이 경우 추가되는 요소가 포함 된 #elements-to-append이라는 컨테이너 요소가 있음). 당신이 셔플 큐에 새로 추가 된 요소를 추가하기 위해 셔플 .add() 방법을 사용할 수 있도록

var $gallary = $('.masonry-gallery'); 
$gallary.find('.gallery-photo').show(); 

var shuffle = new window.shuffle($gallary.get(0), { 
    itemSelector: '.gallery-photo' 
}); 

$("#loadMore").on('click', function(e) { 
    e.preventDefault(); 
    var $elementsToAppend = $('#elements-to-append').children(); 

    $gallary.append($elementsToAppend); 
    $elementsToAppend.fadeIn().each(function(_, element) { 
    shuffle.add([element]); 
    }); 
}); 

Updated Example

나는 원래 셔플 스크립트와 jQuery를 스크립트를 대체했다.

+0

감사합니다. 예, 내 실제 사이트 (라이브가 아닌)에 다른 페이지에서 PHP 컨텐트를로드해야하기 때문에 추가가 있습니다. 새로운 결과로 가득 찬 iterate (.results-1 .results-2 .results-3) 컨테이너를 추가합니다. 하지만 당신의 대답은 정확합니다. 내가 흉내내는 코드를 보면 말이죠. – BlueHelmet

+0

@BlueHelmet - 좋아요, 다른 컨테이너 요소에서 요소를 동적으로 추가하는 예제를 추가했습니다. 그게 당신이 찾고있는거야? https://jsfiddle.net/jr5j7b1b/ –

+0

좋습니다! '.children()'셀렉터를 추가하여 생각하고있다. 내가해야 할 일은 문제의 줄을'$ ('masonry-gallery : last-child .gallery-photo')로 대체하는 것 뿐이다. each (function() {'그건 실제 사이트에서 작동하는 것 같다! , 나는 당신의 답변을 어쨌든 올바른 것으로 표시하고 있습니다. 왜냐하면 그것들 모두가 제가 준 예제에서 잘 작동하기 때문입니다. :) – BlueHelmet