2016-03-19 8 views
0

お手伝いができたら幸いです! :)jQuery画像カルーセルの設定は動的生成コンテンツ(Flickr API)には適用されません

私はスタティックコードの代わりに動的に読み込まれたコンテンツで画像カルーセル(Owl Carousel)を作成しようとしています。この動的コンテンツは、jQueryとFlickr APIを使用して生成されます。

下記のスクリプトは、特定のFlickrアルバムから画像を取得し、HTML要素(画像+リンク)に変換します。 $ .each(data.photoset.photo、機能を使用して(I、アイテム){私は与えられた要件に従って、カルーセルのコンテンツを作成してい機能。

問題があるから、その何とかjQueryの設定ブラウザでinspect要素を使用すると、コンテンツが正しく生成され、カルーセルの設定の一部が生成されたコンテンツに適用されますが、フロントエンドには表示されないことがわかります:view screenshot

注:ダイナミックコンテンツを静的コンテンツに変換してカルーセルの内部に挿入すると、別のスクリプトを使用して動的に作成されたコンテンツにjQueryプラグインを適用する問題の原因となっています。 <body>(スクリプトに必要なAPIキー)から切り取ら

コード:

<body> 

<div class="owl-carousel"> 
</div> 

<script type="text/javascript"> 
function getFlickrImages(setId) { 
    var URL = "https://api.flickr.com/services/rest/" + // Wake up the Flickr API gods. 
    "?method=flickr.photosets.getPhotos" + // Get photo from a photoset. https://www.flickr.com/services/api/flickr.photosets.getPhotos.htm 
    "&api_key=<YOUR-API-KEY>" + // API key. Get one here: http://www.flickr.com/services/apps/create/apply/ 
    "&photoset_id=72157663149819061" + // The set ID. 
    "&[email protected]" + 
    "&privacy_filter=1" + // 1 signifies all public photos. 
    "&per_page=10" + // For the sake of this example I am limiting it to 20 photos. 
    "&format=json&nojsoncallback=1"; // Er, nothing much to explain here. 

    // See the API in action here: https://www.flickr.com/services/api/explore/flickr.photosets.getPhotos 
    $.getJSON(URL, function(data){ 
    var owner = data.photoset.owner; 
    var phot_set_id = data.photoset.id; 
    $.each(data.photoset.photo, function(i, item){ 
     // Creating the image URL. Info: https://www.flickr.com/services/api/misc.urls.html 
     var img_src = "https://farm" + item.farm + ".static.flickr.com/" + item.server + "/" + item.id + "_" + item.secret + "_m.jpg"; 
     //var img_thumb = $("<img/>").attr("src", img_src).attr("id", item.id).css("margin", "8px"); 
     var link_src = "https://www.flickr.com/photos/" + owner + "/" + item.id + "/in/set-"+phot_set_id; 
     var img_link = $("<a/>").attr("href", link_src); 
     var img_thumb = $('<img />').attr({src:img_src}).appendTo($('<a />').attr({href:link_src,target:"_blank"}).appendTo($('.owl-carousel')).wrap("<div></div>")); 

    }); 
    }); 
} 
$(document).ready(function() { 
    getFlickrImages("72157650210689192"); // Call the function! 
}); 
</script> 

<!-- OWL CAROUSEL - http://www.owlcarousel.owlgraphic.com/ --> 
<script src="owl.carousel.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    $(".owl-carousel").owlCarousel(); 
}); 
</script> 

</body> 

答えて

0

てみ関数getFlickrImages(SETID)の終わりにライン

$(".owl-carousel").owlCarousel(); 

を追加します。

owlCarouselの設定が最初にdocument.ready()が呼び出され、その時点で動的コンテンツが生成されなかった可能性があります。したがって、関数getFlickrImages(setId)の最後にowlCarouselを適用すると、domコンテンツはすでに生成されており、カルーセルが適用されます。

別の液体カルーセル(http://www.nikolakis.net/liquidcarousel/)を使用しているときに同じ問題が発生しましたが、上記と同じ解決策が適用されていました。

希望します。

関連する問題