jQuery - 每个函数

时间:2009-12-19 08:01:29

标签: jquery jquery-ui jquery-plugins javascript

我目前有一个缩略图列表,位于ul标记中li

我正在使用Galleria图片库,但我的图库中有超过六张图片,所以我尝试实现一个页面系统。

我要做的是以下内容:

我有一行图片row1,当您点击第2页时row1应隐藏使用此功能hide("slide"),并且在所有图片都隐藏后row2 }应显示使用show("slide"),但这些hideshow函数同时发生,我希望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的数量完全相同。我怎么能只让这个函数执行一次?

3 个答案:

答案 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);
    }
});

感谢所有人的帮助!