2011-11-29 13 views
10

En jQuery, sé que podemos pasar true o false valor a la función a toggle visibilidad de un elemento. No puedo obtener slideToggle para hacer lo mismo. ¿Alguna ayuda, por favor?Pasar verdadero/falso a slideToggle()

Por ejemplo, en lugar de:

if (true) 
    $('something').slideDown(); 
else 
    $('something').slideUp(); 

realmente me gustaría hacer algo similar a:

$('something').toggle(myBoolValue); 

, pero quiero hacerlo con slideToggle.

Mire my example of jsfiddle para saber lo que estoy tratando de hacer.

¿Es esto posible?

+0

¿Qué pasa con su declaración de if? (que no sean llaves) – jondavidjohn

+4

@jondavidjohn, ¡no tener llaves no está mal! y con mi afirmación, solo tengo curiosidad si tengo alguna forma más inteligente de hacer las cosas – LocustHorde

Respuesta

15

slideToggle tiene opcionalmente 2 parámetros duration y una callback de modo que pasa a verdadero/falso para ver/esconder no funcionará. Puede que tenga que escribir su propio complemento que implementará esta lógica. Algo como esto

$.fn.mySllideToggle = function(show){ 
    if(show){ 
     $(this).slideDown(); 
    } 
    else{ 
     $(this).slideUp(); 
    } 
} 
+2

Sí pensé en esto, pero no estaba dispuesto a creer que no había algo más simple ... oh bien – LocustHorde

+0

Aceptaré esta respuesta cuando el límite de tiempo termine ... ya que es más lógico, explicando los dos opcionales parámetros ... gracias – LocustHorde

+0

Gracias @LocustHorde me alegro de que te haya ayudado. – ShankarSangoli

5

Actualización: Al parecer hubo una solicitud de mejora para agregar esta funcionalidad para mantener la coherencia, pero votó en contra: Ticket #10491

+0

Parece una decisión extraña, pero al menos hay una respuesta definitiva – freefaller

3

Es tan simple como esto:

$.fn.slideToggleBool = function(bool, options) { 
    return bool? $(this).slideDown(options) : $(this).slideUp(options); 
} 

¡Disfrútalo!