Jquery添加点击以向上滑动面板?

时间:2010-11-01 12:27:20

标签: jquery animation panel toggle slide

我有以下幻灯片,我使用教程等拼凑在一起......

$(document).ready(function() {

$(".dropdown dt a").click(function() {
    $(".dropdown dd #panel").slideDown(150);
});

$(".dropdown dd #panel a").click(function() {

    $(".dropdown dd #panel").slideUp(150);

});

var myTimeout = null; 
$(".dropdown").bind("mouseleave", function() { 
    myTimeout = window.setTimeout(function() { 
         $(".dropdown dd #panel").slideUp(150); // <-- 1000ms  
    }, 1000);$('.dropdown dt a').removeClass('active'); 
}); 

$(".dropdown dd #panel").bind("mouseenter",function() { 
    window.clearTimeout(myTimeout); 
}); 

});

但是我无法弄清楚如何点击以调出面板。

目前您单击并且面板向下滑动,您进入面板并向外滑动它。

我想补充一点,点击显示面板后,您也可以点击关闭它?

因此,您有两种方法可以关闭它,移开鼠标或再次单击按钮。也许添加一个活跃的类,所以我可以让箭头或其他东西改变打开然后关闭?

任何人都可以帮助我添加点击以恢复功能吗?

非常感谢你能否:)

Thanks guys.

尝试添加你的代码Brian但是设法完全打破它,我显然没有把它放在正确的地方:(

修改

添加Brians建议......

$(document).ready(function() {



$(".dropdown dt a").click(function(){
    if($(".dropdown dd #panel").hasclass('open'){
        $(".dropdown dd #panel").slideDown(150).addClass('open');
    } else {
       $(".dropdown dd #panel").slideUp(150).removeClass('open');
    }
});         


$(".dropdown dd #panel a").click(function() {
    $(".dropdown dd #panel").slideUp(150).removeClass('open');;
});

var myTimeout = null; 
$(".dropdown").bind("mouseleave", function() { 
    myTimeout = window.setTimeout(function() { 
         $(".dropdown dd #panel").slideUp(150); // <-- 1000ms  
    }, 1000);$('.dropdown dt a').removeClass('active'); 
}); 

$(".dropdown dd #panel").bind("mouseenter",function() { 
    window.clearTimeout(myTimeout); 
}); 

});

2 个答案:

答案 0 :(得分:0)

您需要跟踪面板的状态,因为您有两个关闭触发器(因此简单的切换侦听器是不够的)。你可以添加一个js变量(ok,但不是很好)或者使用一个类(更好)来跟踪它。然后有条件地测试你是否点击了听众以确定要做什么:

$(".dropdown dt a").click(function(){
    if($(".dropdown dd #panel").hasClass('open'){
        $(".dropdown dd #panel").slideDown(150).addClass('open');
    } else {
       $(".dropdown dd #panel").slideUp(150).removeClass('open');
    }
});

请确保将removeClass方法添加到内部锚标记上的close侦听器中:

$(".dropdown dd #panel a").click(function() {
    $(".dropdown dd #panel").slideUp(150).removeClass('open');;
});

答案 1 :(得分:0)