幻灯片效果(jQuery)

时间:2010-10-27 07:56:38

标签: javascript jquery

我想知道为什么这不能按预期工作:

$(function() {

    $(".door1-trigger").click(function() {
      $(".door").hide();
      // $(".door1").show("slide", { direction: "right" }, 1000);
      return false;
    });
    $(".door2-trigger").click(function() {
      $(".door").hide();
      $(".door2").show("slide", { direction: "left" }, 1000);
      return false;
    });
    $(".main-trigger").click(function() {
      $(".door").hide();
      if ($('.door1:visible')) {
          $(".main").show("slide", { direction: "left" }, 1000);
      } else {
          $(".main").show("slide", { direction: "right" }, 1000);
      }
      return false;
    });

});

JSFiddle

我希望最初只显示main,点击door 1从左侧滑动相应的容器,然后点击door 2从右侧滑动门2容器。

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:4)

这里有一些问题,无论出于何种原因我都无法使用小提琴样式,只是将其移至jsbin以节省时间。第一个问题在这里:

if ($('.door1:visible')) {

总是是真的,因为它不是假的,你需要在那里添加.length以查看它是否找到了任何元素,如下所示:

if ($('.door1:visible').length) {

另一个问题是你在检查可见性之前用$(".door").hide(); 隐藏它,而是将其移到最后并且不要隐藏你想要显示的门,如下所示:

if ($('.door1:visible').length) {
  $(".main").show("slide", { direction: "left" }, 1000);
} else {
  $(".main").show("slide", { direction: "right" }, 1000);
}
$(".door:not(.main)").hide();

You can test it out here