Jquery侧面板(单击关闭)

Jquery侧面板(单击关闭),jquery,panel,slide,Jquery,Panel,Slide,如您所见,有一个使用jquery的幻灯片面板,它由一个悬停函数设置动画。所以,我想要一个clcik函数来打开和关闭这个面板。如果我在下面的代码中将“hover”替换为“click”,面板将打开,但我不知道如何使其关闭。。。所以面板保持打开状态 ` jQuery(document).ready(function() { $('#slide').hover(function () { $(this).animate({l

如您所见,有一个使用jquery的幻灯片面板,它由一个悬停函数设置动画。所以,我想要一个clcik函数来打开和关闭这个面板。如果我在下面的代码中将“hover”替换为“click”,面板将打开,但我不知道如何使其关闭。。。所以面板保持打开状态

`    
        jQuery(document).ready(function() {
            $('#slide').hover(function () {
                $(this).animate({left:"-25px"},500);

            },function () {
                var width = $(this).width() -50;
                $(this).animate({left: - width  },500);  

            });

        });
     `
(你可以在www.zonevolley.com上看到它的工作原理)

试试这个

var sliderIsOpen = false;
$(document).ready(function() {
    $('#slide').click(function () {
        if (sliderIsOpen == false)
            {
            $(this).animate({left:"-25px"},500);
            sliderIsOpen = true;
            }
        else
        {
            var width = $(this).width() -50;
            $(this).animate({left: - width  },500);
            sliderIsOpen = false;
        }
    });
});

我的和Mikey的代码组合: 将面板悬停以打开,然后单击任意位置以关闭:

var sliderIsOpen = false;
$(document).ready(function() {

  var $sidepanel = $("#slide");

  $sidepanel.on("mouseover.sidepanel", function (e) {
    $sidepanel.animate({left:"-25px"},500);
    sliderIsOpen = true;
  });



  $("html").on("click.anywhere", function(e) {
    if( !$(e.target).is( $sidepanel ) || 
       $(e.target).parents('#slide').length < 1 ) {

     var width = $sidepanel.width() -50;
     $sidepanel.animate({left: - width},500);
     sliderIsOpen = false;

    }
  });

});
var sliderIsOpen=false;
$(文档).ready(函数(){
var$侧面板=$(“#幻灯片”);
$sidepanel.on(“mouseover.sidepanel”,函数(e){
$sidepanel.animate({左:“-25px”},500);
sliderIsOpen=true;
});
$(“html”)。在(“单击任何位置”,函数(e){
如果(!$(e.target).is($sidepanel)|
$(e.target)。父项(“#幻灯片”)。长度<1){
var width=$sidepanel.width()-50;
$sidepanel.animate({left:-width},500);
sliderIsOpen=false;
}
});
});
这意味着如果我们把鼠标放在面板上,它就会打开。 如果我们点击页面,目标不是幻灯片,或者我们点击的内容的父项不是幻灯片,那么我们就关闭它

click.anywhere
只是一种为click事件提供自己标识符的方法,这样以后我们就可以
$(“html”).off(“click.anywhere”)并且不破坏我们/插件可能已经完成的任何其他事件绑定:)

编辑:
我刚刚注意到您正在网站上运行jQuery v1.3.2,这段代码无法与该版本一起使用,非常抱歉。。。也许你本来应该提到这一点。:)jQuery的最新版本有着巨大的速度提升。如果您无法升级,您将不得不等待一段时间,以便我们可以将答案转换为该版本。

Wow!太好了!:)因此,我必须单击元素来关闭它,但是如果我想通过单击此面板外部来关闭面板,那么代码应该是什么呢???那么您希望它通过单击任意位置来关闭它?只是为了代码的可维护性;我会考虑使用BooLeNe:<代码> i <代码>,也许使用一个更可读的变量名(<代码> var SLLDRISOPENTROUN= FALSE;< /COD>?)…但是,这不会影响您的答案。:)好啊我理解代码,那么,在我的情况下,整个代码应该是什么?我只是不知道如何纠正它。我的jquery版本:*jquery JavaScript库v1.10.1在哪里看到我没有使用这个版本?好的!很抱歉。。。我在我的网站上使用了两个版本的jquery。。。所以,现在只有新版本了!:)所以我用新的jquery版本尝试了这段代码。。。它在悬停时打开,但在“其他地方单击”时不关闭“我想我会让它这样做,“单击打开”和“单击关闭”!:)我喜欢!:)太多了!