2009-12-19 61 views
0

我目前有位于一个ul标签为li的缩略图列表。jQuery的 - 每个功能

我现在用的是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); 
}); 

但现在,展会功能运行完全一样的li的,这是上可见数的次数之前的'页面'。我怎样才能让这个函数只执行一次?

回答

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) 
    }); 
+0

谢谢,这正是我想要的,但是'show'功能究竟执行了六次,你有什么想法,为什么? – 2009-12-19 08:39:33

+0

你可能需要放一个stop(),因为它建立了一个队列(你有六个可见元素吧?)。我会更新代码。 – pixeline 2009-12-19 15:04:13

4

使用您的回电。他们在效果完成后立即运行。

$(".item1").slideUp("fast", function(){ 
    // this is the callback. It will run only when .slideUp completes 
    $(".item2").slideDown("fast"); 
}); 
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); 
    } 
}); 

感谢所有帮助大家!