我也尝试了很多方法,但没有一个真正有效......然后我手动完成了它,现在它可以工作了:在调整窗口大小时保存滑块数据,然后由 flexslider 更改:销毁 flexslider(https://stackoverflow.com /a/16334046/7334422)并完全删除节点,手动添加保存在数据中的原始滑块节点,再次添加并初始化flexslider ...因为这非常昂贵,我还添加了一个调整大小的方法(https://stackoverflow. com/a/40534918/7334422),为了在调整大小时不被执行......是的,它是一些代码,它有点hacky,但它正在工作:)
$.fn.resized = function (callback, timeout) {
$(this).resize(function () {
var $this = $(this);
if ($this.data('resizeTimeout')) {
clearTimeout($this.data('resizeTimeout'));
}
$this.data('resizeTimeout', setTimeout(callback, timeout));
});
};
function myFlexInit(slider){
slider.data("originalslider", slider.parent().html());
slider.flexslider({
animation: "slide",
//... your options here
});
}
$(".flexslider").each(function() {
myFlexInit($(this));
});
$(window).resized(function(){
$(".flexslider").each(function() {
$(this).removeData("flexslider");
parent = $(this).parent();
originalslider = $(this).data("originalslider");
$(this).remove();
parent.append(originalslider);
newslider = parent.children().first();
myFlexInit(newslider);
});
}, 200);
您最好将滑块包装在自己独特的容器中:
<div class="sliderparent">
<div class="flexslider">
<ul class="slides">
</ul>
</div>
</div>