jQuery slideUp显示元素而不是隐藏

Uma*_*bar 44 javascript jquery

jQuery的slideUp效果通过向上滑动隐藏元素,而slideDown则显示元素.我想用slideUp显示我的div.谁能指导我?谢谢

Jas*_*son 52

$("div").click(function () {
      $(this).hide("slide", { direction: "down" }, 1000);
});
Run Code Online (Sandbox Code Playgroud)

http://docs.jquery.com/UI/Effects/Slide

  • 不,我没有,我不想要jQuery UI.我想只用jQuery做这个! (12认同)
  • 我想展示div而不是隐藏它们 (4认同)
  • 如果你想要它,那就去做吧.之前有一个答案(现已被删除)使用animate,这应该是正确的方法.但是你必须自己做更多的事情,而不仅仅告诉我们你想拥有什么. (2认同)

red*_*bmk 13

这比仅仅说slideUpShow()或什么更复杂,但你仍然可以做到.这是一个非常简单的示例,因此您可能会发现一些需要解决的边缘情况.

$("#show-animate-up").on("click", function () {
    var div = $("div:not(:visible)");

    var height = div.css({
        display: "block"
    }).height();

    div.css({
        overflow: "hidden",
        marginTop: height,
        height: 0
    }).animate({
        marginTop: 0,
        height: height
    }, 500, function () {
        $(this).css({
            display: "",
            overflow: "",
            height: "",
            marginTop: ""
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴,显示slideUp/ slideDown方法,使用相同的效果animate,以及使用animate相反的修改版本:http://jsfiddle.net/sd7zsyhe/1/

由于animate是内置的jQuery函数,因此您不需要包含jQuery UI.

  • 如果OP不想使用jQuery UI库,这应该是答案 (2认同)

小智 5

我发现了一个棘手的方法...
您可以将div设置为css样式bottom:0px,添加呼叫
$("#div).slideDown();
将以所需的slideUp-to-show效果显示。

  • 这是可行的,但前提是只要相关的#div也可以设置为position:absolute;当相关的#div需要相对放置时,则不需要。 (4认同)

jpi*_*ora 5

与slideUp和slideDown相反.将这两个函数添加到jQuery中.

$.fn.riseUp = function()   { $(this).show("slide", { direction: "down" }, 1000); }
$.fn.riseDown = function() { $(this).hide("slide", { direction: "down" }, 1000); }
Run Code Online (Sandbox Code Playgroud)

  • 为此,您需要使用jQueryUI库,[link](https://developers.google.com/speed/libraries/devguide#jquery) (3认同)