Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript slideReveal脚本-如何关闭所有打开的;幻灯片“;在打开新幻灯片之前?_Javascript_Jquery - Fatal编程技术网

Javascript slideReveal脚本-如何关闭所有打开的;幻灯片“;在打开新幻灯片之前?

Javascript slideReveal脚本-如何关闭所有打开的;幻灯片“;在打开新幻灯片之前?,javascript,jquery,Javascript,Jquery,我在一个新网站上玩这个,效果很好,易于实现: 但有一个问题我无法确定,如果您有多个滑块,并且其中一个已从上一个事件中“退出”,您如何首先确保所有其他滑块都已“关闭”,然后打开当前滑块 我可以用if/then来检查每个单独的控制器,但我认为必须有一种更优雅的方法…我认为解决这个问题的最好方法是创建一个“页面级控制器”。它的作用是充当一个容器和控制器,对页面中发生的事件进行排序 因此,您必须“代理”滑动打开一个闭合的a面(并添加一个关闭另一个滑动区域的依赖项),因为API似乎没有任何像“onSlid

我在一个新网站上玩这个,效果很好,易于实现:

但有一个问题我无法确定,如果您有多个滑块,并且其中一个已从上一个事件中“退出”,您如何首先确保所有其他滑块都已“关闭”,然后打开当前滑块


我可以用if/then来检查每个单独的控制器,但我认为必须有一种更优雅的方法…

我认为解决这个问题的最好方法是创建一个“页面级控制器”。它的作用是充当一个容器和控制器,对页面中发生的事件进行排序

因此,您必须“代理”滑动打开一个闭合的a面(并添加一个关闭另一个滑动区域的依赖项),因为API似乎没有任何像“onSlideOpen”那样发出的钩子或事件。这就是你的控制器要处理的

var PageController = function(){
  var $leftSlide = $('#leftSlider').slideReveal(), // You'll want to sub in
      $rightSlide = $('#rightSlider').slideReveal(); // your selector names


  return {
    openLeft: function() {
      $leftSlide.slideReveal('show');
      $rightSlide.slideReveal('hide');
    },
    openRight: function() {
      $rightSlide.slideReveal('show');
      $leftSlide.slideReveal('hide');
    }
  };
};

var pageController = new PageController();

pageController.openLeft(); // will slide reveal left side
pageController.openRight(); // will simultaneously open right and close left
现在你甚至可以做一些事情,比如检查那些幻灯片的状态,以防你有其他的交叉依赖

很多人可能会通过发出事件并捕捉它们来处理这类事情,但我真的不喜欢酒吧子模型。它很快就会变得非常脆弱。

在所有滑块上使用.slideReveal(“隐藏”),然后在想要显示的滑块上使用.slideReveal(“显示”)

一种方法是给所有滑块一个类,并将其用作选择器

i、 e

$(".slider").slideReveal("hide");
$("#sliderYouWantToShow").slideReveal("show");