2011-05-27 7 views
8

He mirado el source code in jquery for slideup ...¿Cómo funciona slideUp() en jQuery? Estoy tratando de hacer mi propia slideRIght()

// 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); 
    }; 
}); 

entiendo que esta es la abreviatura de funciones, por lo que a través de folllow GenFX

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

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

    return obj; 
} 

y luego fxAttrs

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

pero simplemente no puedo entender cómo funciona este código, o cómo iba a ir sobre la creación de una diapositiva o slideLeft Derecha que afecta el atributo de ancho del HTML.

+2

Este es un mejor enlace para 'slideUp': http://james.padolsey.com/jquery/#v=1.2.6&fn=jQuery.fn.slideUp – Neal

Respuesta

1

Usted puede hacer lo mismo con slideRight como con slideUp:

$.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); 
    }); 
}; 

violín: http://jsfiddle.net/maniator/eVUsH/

+0

Este es bastante difícil de leer. Le está permitiendo al usuario pasar opciones, pero ha llamado un efecto "deslizar". ¿De dónde vino eso, y si quería deslizarme hacia la izquierda, es posible? – digiguru

3

Se puede utilizar:

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

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

demo en jsFiddle.

+0

Me gusta esta técnica, ya que no utiliza la interfaz de usuario de jquery, pero estoy teniendo verdaderas dificultades para hacer que cambie de dirección inversa (deslice hacia la derecha en esta demostración; pruebe una diapositiva cuando esté oculta http: // jsfiddle. net/bj4pm/4 /) – digiguru

Cuestiones relacionadas