Réinitialiser Slick js après un appel ajax réussi
Je suis en utilisant Slick pour un carrousel de la mise en œuvre et tout fonctionne bien lorsque les pages de charge.Ce que je suis en train de réaliser est que lorsque je fais un appel Ajax pour récupérer de nouvelles données, je veux encore de la nappe carrousel de mise en œuvre, au moment où je le perds.
J'ai mis l'appel de slick dans une fonction
function slickCarousel() {
$('.skills_section').slick({
infinite: true,
slidesToShow: 3,
slidesToScroll: 1
});
}
et puis j'appelle la fonction au sein de mon succès rappel
$.ajax({
type: 'get',
url: '/public/index',
dataType: 'script',
data: data_send,
success: function() {
slickCarousel();
}
});
Mais la fonction n'est pas appelée. Comment puis-je réinitialiser ce js?
source d'informationauteur Richlewis
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser le unslick méthode:
Cela devrait fonctionner.
Le meilleur moyen c'est que vous devez détruire la nappe curseur après la réinitialisation.
J'ai dû unslick le carrousel avant l'appel ajax commence, mais vous ne pouvez pas le faire jusqu'à ce qu'il y a déjà une nappe de carrousel. Donc, j'ai mis une variable à 0 et n'exécutez unslick après il a changé
Note: je ne suis pas sûr si cela est correct, mais vous pouvez lui donner un essai et voir si cela fonctionne.
Il y a un
unslick
méthode qui de-initialise le carrousel, de sorte que vous pouvez essayer en utilisant que, avant de ré-initialisation.Espère que cette aide.
J'ai été confronté à un problème où la Nappe de manège n'était pas de l'actualisation de nouvelles données, il a été ajout de nouvelles diapositives précédentes, j'ai trouvé une réponse qui a résolu mon problème, c'est très simple.
essayer unslick, puis affecter vos nouvelles données qui est rendu à l'intérieur de la nappe de carrousel, puis initialiser la nappe de nouveau. ces mesures que pour moi:
Remarque: vérifiez la nappe de site web pour la syntaxe, juste au cas où. assurez-vous également que vous n'êtes pas à l'aide de unslick avant slick est encore initialisé, ce que cela signifie est simplement initialiser (comme cette
jquery('.my-class').slick({options}
); le premier appel ajax et une fois qu'il est initialisé puis suivez les étapes ci-dessus, vous pouvez vouloir utiliser si d'autreLe meilleur moyen serait d'utiliser le
unslick
paramètre ou de la fonction(selon votre version de la nappe), comme indiqué dans les autres réponses mais cela ne fonctionne pas pour moi. J'obtiens des erreurs noire qui semblent être liées à cette.Ce qui a fait le travail pour le moment, cependant, est de retirer le
slick-initialized
etslick-slider
classes à partir du récipient avant de le réinitialiser lisse, comme suit:Supprimant les classes ne semble pas entamer la destruction de l'événement(pas encore testé mais qui a du sens), mais ne cause la plus tard
slick()
appel à se comporter correctement tant que vous n'avez pas de déclencheurs sur les détruire, vous devriez être bon.Après l'appel d'une demande de temporisation pour initialiser la nappe de curseur.
Ne pas initialiser la nappe de curseur au début. Initialiser après une requête AJAX avec délai d'attente. Cela devrait fonctionner pour vous.