当异步调用新的画廊列表时,我尝试重新初始化 FlexSlider 而不刷新页面。
我认为下面的例程会起作用,但事实并非如此。即使新图像已成功加载,第一个 FlexSlider 似乎仍然存在。
有没有办法先破坏然后重建画廊?
Thanks
function flexInit() {
$('.flexslider').flexslider({
animation: "slide",
controlsContainer: ".paginator",
manualControls: 'a',
after: function(slider){
if(slider.atEnd == true) {
// ??? slider.destroy;
galBuild();
}
}
});
}
function galBuild() {
$.getJSON("/gallery/next/"+galID, function (data) {
var results = data.objects;
var list = $(".flexslider ul.slides");
var i = 0;
$.each(results, function () {
list.append('<li><p>' + results[i].title + '</p><img src="' + results[i].src + '"><p class="flex-caption">' + results[i++].caption + '</p></li>');
});
flexInit();
});
}
galBuild();
我正在使用不同的方法,即
你已经启动了一个flexslider:
$('#element).flexslider({
animation: "slide",
controlNav: false,
directionNav: true
});
当我想更改以前创建的滑块中的幻灯片并重新启动它时,我会执行以下操作:
-
创建临时div:
$('#element).before('
<div id="element_temp" class="flexslider"></div>
');
-
删除带有先前创建的滑块的 div
$('#element).remove();
-
将新的幻灯片列表插入临时 div:
var html = `
<ul class='slides">
<li><img src="link to image" /></li>
<li><img src="link to image" /></li>
<li><img src="link to image" /></li>
</ul>`;
$('#element_temp').html(html);
-
在临时 div 上启动 flexslider
$('#element_temp').flexslider({
animation: "slide",
controlNav: false,
directionNav: true
});
-
将 div ID 从 element_temp 更改为 element
$('#element_temp').attr('id','element');
它适用于多个 Flexlider
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)