JQuery .slideDown()正在向上滑动

时间:2012-02-10 16:30:04

标签: javascript jquery hover slidedown slideup

这有效,但我不确定为什么。在function capIn()中,在我看来,行$botcap.slideDown("slow")应该将div滑下来。它将它滑起来。如果我尝试使用.slideUp(),就不会发生任何事情,就像它试图将其滑下来一样。任何人都可以向我解释这个吗?

$(".slide").hover(capIn, capOut);

function capIn(){
    //slide top caption down
    var $topcap = $(this).children(".topcap");
    $topcap.slideDown("slow");

    //slide bottom caption up
    //!! Why does slideDown slide caption up here?
    var $botcap = $(this).children(".botcap");
    $botcap.slideDown("slow")
}

function capOut(){
    //slide top back up
    var $topcap = $(this).children(".topcap");
    $topcap.slideUp("slow");

    //slide bottom back down
    var $botcap = $(this).children(".botcap");
    $botcap.slideUp("slow");
}

3 个答案:

答案 0 :(得分:9)

jQuery的slideDownslideUp函数实际上是用词不当。正如slideUp的文档所说:

  

使用滑动动作隐藏匹配的元素。

通过修改元素的高度来实现隐藏;通常,这意味着元素的下边缘似乎向上滑动,因此名称。但是,如果元素锚定在底部(例如,通过设置position: absolutebottom: 0),则高度修改将使顶边显示为向下滑动。

答案 1 :(得分:0)

一种可能的解决方法是用容器包裹$('.botcap')元素并将容器对齐到底部。

答案 2 :(得分:0)

这是因为将元素定位在绝对位置和底部:0;这实际上将元素视为基于底部,因此其slideDown()向上。它可以通过使用top :(元素的高度)而不是bottom来修复:0。