Я пытаюсь использовать flexslider в двух вкладках ui. На первой вкладке загружается правильно. Но во вторых вкладках загружается последнее изображение. Но если я нажимаю на внешнюю сторону браузера или сворачиваю браузер, тогда вторая вкладка загружает первое изображение. Вот код
<div id="tabs-1">
<div class="flexslider " >
<ul class="slides">
<li data-thumb="images/1_thumb.jpg">
<img src="images/1.jpg ">
</li>
<li data-thumb="images/2_thumb.jpg">
<img src="images/2.jpg">
<li data-thumb="images/3_thumb.jpg">
<img src="images/3.jpg">
</li>
<li data-thumb="images/4.jpg">
<img src="images/4.jpg">
</li>
</ul>
</div>
</div>
<div id="tabs-2">
<div class="flexslider" id="slider2" >
<ul class="slides">
<li data-thumb="images/1_thumb.jpg">
<img src="images/1.jpg ">
</li>
<li data-thumb="images/2_thumb.jpg">
<img src="images/2.jpg">
<li data-thumb="images/3_thumb.jpg">
<img src="images/3.jpg">
</li>
<li data-thumb="images/4.jpg">
<img src="images/4.jpg">
</li>
</ul>
</div>
</div>
сценарий:
$( "#tabs" ).tabs({
create: function( e, ui ) {
ui.panel.find( ".flexslider" ).flexslider({
animation: "slide",
controlNav: "thumbnails",
// animationLoop: false,
slideshow: false
});
},
beforeActivate: function( e, ui ) {
ui.oldPanel.find( ".flexslider" ).flexslider( "destroy" );
ui.newPanel.find( ".flexslider" ).flexslider({
animation: "slide",
controlNav: "thumbnails",
//animationLoop: false,
slideshow: false
});
}
});
Это ссылка на сайт https://dl.dropboxusercontent.com/u/168659703/zaarly_v2/page1.html. Когда я установил
animationLoop: false
то работает отлично. Скажите, пожалуйста, где проблема.
Любой компонент, который требует некоторых вычислений по размеру для его инициализации, не будет работать на скрытой вкладке, потому что панель вкладок сама скрыта с помощью отображения: none; так что любые элементы внутри него не будут сообщать о своей фактической высоте и ширине. (0 в большинстве браузеров)
Вот ваше решение
$( "#tabs" ).tabs({
beforeActivate: function( e, ui ) {
if(ui.oldTab.length>0){
ui.oldTab.find( ".flexslider" ).flexslider( "destroy" );
}
},
show: function(e,ui){
$(ui.panel).find( ".flexslider" ).flexslider({
animation: "slide",
controlNav: "thumbnails",
animationLoop: false,
slideshow: false
});
}
});
Я удаляю слайдер в "beforeActivate" и инициализирую следующий слайдер вкладки в "show". Потому что к тому времени новая вкладка активируется и отображается.