最初我隐藏了我的flexslider,直到用户点击链接然后它才会打开。但由于某种原因,滑块在显示后才会工作,直到我调整浏览器窗口,这很奇怪!当我不隐藏flexslider它工作正常。下面是我用来打开和关闭flex滑块的CSS,HTML和jquery。任何熟悉flex滑块的人都会知道为什么会这样?谢谢!
CSS
section#hotspots .dropdown-area {
width: 100%;
float: left;
display: none;
}
HTML
<h1>Hot Spots <span class="toggle-button"></span></h1>
<section class="dropdown-area">
<div class="flex-container">
<div class="flexslider" id="secondary-slider">
<ul class="slides">
<li><img src=
"%3C?php%20bloginfo('template_directory');%20?%3E/images/212/Portland-1.jpg"></li>
<li><img src=
"%3C?php%20bloginfo('template_directory');%20?%3E/images/212/Portland-2.jpg"></li>
<li><img src=
"%3C?php%20bloginfo('template_directory');%20?%3E/images/212/Portland-3.jpg"></li>
</ul>
<ul class="flex-control-nav">
<li>
<a href="">LOLA COFFEE</a> /
</li>
<li>
<a href="">PUBLIC MARKET CAFE</a> /
</li>
<li>
<a href="">MATT'S BIG BREAKFAST</a> /
</li>
</ul>
</div><!--End Flexslider-->
</div><!--End Flex-container-->
</section>
JS
$(window).load(function() {
$("#hotspots .toggle-button").click(function() {
$("#hotspots .dropdown-area").slideToggle("slow");
$("#hotspots span").toggleClass("toggle-button close");
});
});
答案 0 :(得分:1)
我假设您使用的是最新版本的flexslider,在这种情况下,您可以使用更高效的setup()。我还创建了一个单独的事件来在第一次点击.toggle按钮时运行setup()函数。
这样的事情:
$toggleButtons = $('#hotspots .toggle-button');
//execute once, then remove this event
$toggleButtons.on('click.flexSetup', function() {
$('.flexslider').data('flexslider').setup();
//remove this click event
$toggleButtons.off('click.flexSetup');
});
//your regular click events
$toggleButtons.on('click', function() {
$("#hotspots .dropdown-area").slideToggle("slow");
$("#hotspots span").toggleClass("toggle-button close");
});
当然,如果你想要快速而肮脏的解决方案,你可以使用绝对定位而不是隐藏flexslider。
section#hotspots .dropdown-area {
position: absolute; left: -10000px;
}
当你想要“显示”flexslider时,只需将position和left属性设置为默认的css值。 (position: static
&amp; left: auto
在您的情况下)
答案 1 :(得分:0)
这是因为flexslider在页面加载时初始化但具有隐藏内容。因此,您只需要在切换点击时使用init flexslider:
$(window).load(function() {
var fs_init = 0; //init var
$("#hotspots .toggle-button").click(function () {
$("#hotspots .dropdown-area").slideToggle("slow");
$("#hotspots span").toggleClass("toggle-button close");
if (fs_init == 0) {fs_init++; //to prevent other initializations
$('.flexslider').flexslider({
animation: "slide" //enter you params here
});
}
});
});
注意:不要将滑块初始化两次,只是来自切换事件,而不是onLoad
答案 2 :(得分:0)
我努力在手风琴/崩溃的点击事件上调整.flexslider的大小
$('.acordeon-trigger').click(function () {
// here all your accordion stuff
$('.flexslider').resize(); // this is it
});