jQuery .show();函数不显示之前隐藏的所有元素
有人可以帮我吗?我需要在 jQuery 的其余部分构建元素列表之前隐藏 .jshowoff-link
元素。然后我在最后展示相同的元素。
它生成链接内的图像列表。由于某种原因,它只显示第一个图像和链接,而不显示其他图像和链接。
我尝试交换 .show();
函数的位置并将其添加到最后一个 if else
语句中,但这也不起作用。
这一切都是为了在 .jshowoff();
函数触发之前停止显示图像和链接列表。
所以我完全没有主意了。有人可以帮忙吗?
// hide banners to begin with
$ ('.jshowoff-link').hide();
// this function wraps the elements in the neccessary tags to work with anything Slider
$ (document).ready(function() {
$('a.jshowoff-link')
.wrap('<li class="jshowoff-slide"></li>');
$('li.jshowoff-slide')
.wrapAll('<ul id="jshowoff"></ul>');
// figures out if there's more than one <li> being produced
if (banners.length > 1) {
// if so, build the jshowoff
$('#jshowoff').jshowoff({speed:7000, changeSpeed:1000, autoPlay:true, controls:true, links:true, animatePause:false, hoverPause:false });
}
else {
// if not, disable the function
$('#jshowoff').jshowoff({speed:7000, changeSpeed:1000, autoPlay:false, controls:false, links:false, animatePause:false, hoverPause:false });
}
// show the jshowoff after it's been built to stop flash of content on slow internet connections
$('.jshowoff-link').show();
return false;
});
Can somebody help me please? I need to hide the .jshowoff-link
element before the rest of the jQuery builds the list of elements. I then show the same element at the end.
It produces a list of images within links. For some reason though it only displays the first image and link and not the others.
I've tried swapping the position of the .show();
function and adding it inside the last if else
statement, and that doesn't work either.
This is all done to stop the list of images and links being shown before the .jshowoff();
function triggers.
So I'm all out of ideas. Can anybody help?
// hide banners to begin with
$ ('.jshowoff-link').hide();
// this function wraps the elements in the neccessary tags to work with anything Slider
$ (document).ready(function() {
$('a.jshowoff-link')
.wrap('<li class="jshowoff-slide"></li>');
$('li.jshowoff-slide')
.wrapAll('<ul id="jshowoff"></ul>');
// figures out if there's more than one <li> being produced
if (banners.length > 1) {
// if so, build the jshowoff
$('#jshowoff').jshowoff({speed:7000, changeSpeed:1000, autoPlay:true, controls:true, links:true, animatePause:false, hoverPause:false });
}
else {
// if not, disable the function
$('#jshowoff').jshowoff({speed:7000, changeSpeed:1000, autoPlay:false, controls:false, links:false, animatePause:false, hoverPause:false });
}
// show the jshowoff after it's been built to stop flash of content on slow internet connections
$('.jshowoff-link').show();
return false;
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题是这样的:当 jshowoff 启动时,它会从
#jshowoff
容器中删除所有子元素并将它们放入变量中。然后它将它们一一添加到容器中。因此,当您尝试show()
时,您的链接并不在 DOM 中。您可以做的是,在调用jshowoff()
之前隐藏完整的jshowoff
元素,然后在调用完成后再次显示它:如果您仍然看到闪烁的元素,您可以还首先隐藏链接,创建容器,隐藏它,再次显示链接,然后添加 jshowoff 并再次显示容器,如下所示:
The problem is this: when jshowoff starts, it removes all child elements from the
#jshowoff
container and puts them in a variable. It then adds them to the container one by one. Because of this, your links are not in the DOM at the moment you try toshow()
them. What you could do, is hide the completejshowoff
element before callingjshowoff()
, then showing it again after the call has finished:If you still get flashing elements, you could also hide the links first, create the container, hide that, show the links again, and then add the jshowoff and show the container again, like this: