slideUp()如何在jQuery中工作?我正在尝试制作自己的幻灯片()

时间:2011-05-27 15:22:28

标签: jquery jquery-animate

我查看了source code in jquery for slideup ...

// Generate shortcuts for custom animations
jQuery.each({
    slideDown: genFx("show", 1),
    slideUp: genFx("hide", 1),
    slideToggle: genFx("toggle", 1),
    fadeIn: { opacity: "show" },
    fadeOut: { opacity: "hide" },
    fadeToggle: { opacity: "toggle" }
}, function( name, props ) {
    jQuery.fn[ name ] = function( speed, easing, callback ) {
        return this.animate( props, speed, easing, callback );
    };
});

据我所知,这是函数的简写,所以我逐渐介绍GenFX

function genFx( type, num ) {
    var obj = {};

    jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {
        obj[ this ] = type;
    });

    return obj;
}

然后是fxAttrs

fxAttrs = [
        // height animations
        [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
        // width animations
        [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
        // opacity animations
        [ "opacity" ]
    ],

但我无法弄清楚这段代码是如何工作的,或者我将如何创建影响HTML宽度属性的slideLeft或slideRight。

2 个答案:

答案 0 :(得分:3)

您可以使用:

$('div').animate({ width: 'show' }); // slideLeft

$('div').animate({ width: 'hide' }); // slideRight

jsFiddle的演示。

答案 1 :(得分:1)

您可以使用slideRightslideUp执行相同操作:

$.fn.slideRight = function(options) {
    var s_opt = {
        speed: "slow",
        callback: null
    }

    $.extend(s_opt, options);
   return this.each(function() {
        $(this).effect("slide", null,
            s_opt.speed, s_opt.callback);
   });
};

小提琴:http://jsfiddle.net/maniator/eVUsH/