我目前有一个缩略图列表,位于ul
标记中li
。
我正在使用Galleria图片库,但我的图库中有超过六张图片,所以我尝试实现一个页面系统。
我要做的是以下内容:
我有一行图片row1
,当您点击第2页时row1
应隐藏使用此功能hide("slide")
,并且在所有图片都隐藏后row2
}应显示使用show("slide")
,但这些hide
和show
函数同时发生,我希望hide
函数在show
函数执行之前完成,这是我的代码:
$("a[href^='#']").click(function() {
if (($(this).attr("href") == "#") && ($(this).attr("rel") != "gallery") && ($(this).attr("href").indexOf("row") < 0)) {
return false;
}
else if ($(this).attr("href").indexOf("row") < 0) {
$.scrollTo($(this).attr("href"),1000);
return false;
} else {
var href = $(this).attr("href");
href = href.replace("#","");
$("ul.galleria li").each(function() {
if ($(this).is(":visible")) {
$(this).hide("slide");
}
}).;
$("ul.galleria li."+href).each(function() {
$(this).show("slide", 800);
});
return false;
}
});
如何在show函数等待继续时执行hide函数?
//编辑
我已将代码更改为以下内容:
$("ul.galleria li:visible").hide("clip", {direction : "horizontal"},function(){
$("ul.galleria li."+href).show("clip", {direction : "horizontal"}, 800);
});
但是现在,show函数的运行次数与上一个“页面”中可见的li
的数量完全相同。我怎么能只让这个函数执行一次?
答案 0 :(得分:4)
使用你的回电。它们在效果完成后立即运行。
$(".item1").slideUp("fast", function(){
// this is the callback. It will run only when .slideUp completes
$(".item2").slideDown("fast");
});
答案 1 :(得分:2)
请尝试更改此内容:
$("ul.galleria li").each(function() {
if ($(this).is(":visible")) {
$(this).hide("slide");
}
}).;
$("ul.galleria li."+href).each(function() {
$(this).show("slide", 800);
});
到此:
$("ul.galleria li:visible").hide("slide",function(){
$("ul.galleria li."+href).stop().show("slide", 800)
});
答案 2 :(得分:0)
像这样解决了:
var counter = 0;
$("ul.galleria li:visible").hide("blind", {direction : "horizontal"},function(){
counter++;
if (counter <= 1) {
$("ul.galleria li."+href).show("blind", {direction : "horizontal"}, 800);
}
});
感谢所有人的帮助!