Voici un exemple que j'ai fait sur jsFiddle pour reproduire le problème auquel je suis confronté. Je lance une fonction init pour créer un curseur après le chargement du contenu dynamique via ajax. Une partie des éléments et classes créés par slick sont ajoutés à DOM mais ne fonctionne pas.slickslider ne fonctionne pas sur le contenu dynamique
function top_posts(el){
var reqUrl = 'https://jsonplaceholder.typicode.com/users';
el.children('.loadspan').html('<i class="fa fa-circle-o-notch fa-spin fa-fw" style="padding: 0;"></i>');
$.ajax({
url: reqUrl,
dataType: 'json',
}).done(function(data) {
el.children('.loadspan').hide();
if(data != ""){
\t \t console.log(data);
$.each(data, function(index) {
var output = '<div class="card-out">' +
'<div class="card-bg" style="background-image: url(https://placeimg.com/640/480/any);"></div>' +
'<div class="card-content">' +
'<div class="card-title">' +
this.name +
'</div>' +
'</div>' +
'</div>';
setTimeout(function() {
el.append(output);
}, (100 * (index + 1)));
});
top_slider_init();
} else{
el.children('.loadspan').html('<i class="fa fa-exclamation-triangle" aria-hidden="true"></i>');
}
}).fail(function(jqXHR, textStatus) {
el.children('.loadspan').html('<i class="fa fa-exclamation-triangle" aria-hidden="true"></i>');
console.log("Request failed: " + textStatus);
});
return false;
}
var el = $('.top-posts-slider');
top_posts(el);
function top_slider_init() {
$('.top-posts-slider').slick({
slidesToShow: 3,
slidesToScroll: 1,
speed: 300,
adaptiveHeight: false,
variableWidth: false,
autoplay: true,
autoplaySpeed: 3000,
infinite: true,
dots: false,
arrows: false,
centerMode: false,
centerPadding: "50px",
cssEase: "ease-in-out",
draggable: true,
fade: false,
focusOnSelect: false,
pauseOnFocus: true,
pauseOnDotsHover: false,
vertical: false,
verticalSwiping: false,
rtl: false,
});
}
.card-out {
height: 200px;
width: 100%;
position: relative;
}
.card-bg {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-size: cover;
}
.card-title {
position: absolute;
bottom: 10px;
left: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<div class="top-posts-slider">
<div class="loadspan"></div>
</div>
toute aide appréciée :)