2011-11-29 21 views
10

In jQuery, so che è possibile passare il valore true o false alla funzione a toggle visibilità di un elemento. Non riesco a ottenere slideToggle per fare la stessa cosa. Qualche aiuto per favore?Passa true/false a slideToggle()

Per esempio, invece di:

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

Mi piacerebbe davvero fare qualcosa di simile a:

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

Ma voglio farlo con slideToggle.

Vedere my example of jsfiddle per sapere cosa sto cercando di fare.

È possibile?

+0

Cosa c'è che non va nel tuo statale? (a parte l'assenza di parentesi graffe) – jondavidjohn

+4

@jondavidjohn, l'assenza di parentesi graffe non è sbagliata! e con la mia affermazione, sono solo curioso di sapere se ho un modo più intelligente di fare le cose – LocustHorde

risposta

15

slideToggle prende opzionalmente 2 parametri duration e callback così passando true/false per mostrare/nascondere non funzionerà. Potrebbe essere necessario scrivere il proprio plugin che implementerà questa logica. Qualcosa di simile

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

Ho pensato a questo, ma non ero disposto a credere che non ci fosse qualcosa di più semplice .. beh, – LocustHorde

+0

Accetterò questa risposta quando il tempo limite sarà finito .. poiché è più logico, spiegando i due opzionali parametri .. grazie – LocustHorde

+0

Grazie @LocustHorde felice che ti abbia aiutato. – ShankarSangoli

5

Aggiornamento: A quanto pare ci fosse una richiesta di miglioramento per aggiungere questa funzionalità per amor di coerenza, ma hanno votato contro di essa: Ticket #10491

+0

Sembra una strana decisione, ma almeno c'è una risposta definitiva – freefaller

3

E 'semplice come questo:

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

Buon divertimento!