2013-07-31 8 views
6
$(document).ready(function() { 
    $("#newrecord tr:odd").addClass("odd"); 
    $("#newrecord tr:not(.odd)").find("li").hide(); 
    $("#newrecord tr:not(.odd)").hide(); 
    $("#newrecord tr:first-child").show(); 

    $("#newrecord tr.odd").click(function() { 
     $("#newrecord tr:not(.odd)").show(); 
     $(this).next("tr").find("li").slideToggle("slow","swing"); 
    }); 
}); 

Po pierwsze ukrywa wszystkie równe rzędy, a po kliknięciu na nieparzysty wiersz wyświetla równy rząd i slajdy w dół zawartości li w każdym wierszu. Potrzebuję pomocy, gdy kliknę ponownie, znacznik li przesunie się, jak chcę, ale powinien również ukryć wiersz. to powinno wywołać funkcję ukrywania w rzędzie po zjedzeniu w górę.Funkcja połączenia po ukończeniu slidetoggle kompletna

+0

Co zrobilibyśmy, gdyby nie programiści bez jQuery? _ (użyj zepto?) _ –

+0

Wystarczy rzucić okiem na oficjalną dokumentację jQuery, w której znajdziesz odpowiedź: http://api.jquery.com/slideToggle/ –

Odpowiedz

9
$(document).ready(function() { 
    $("#newrecord tr:odd").addClass("odd"); 
    $("#newrecord tr:not(.odd)").find("li").hide(); 
    $("#newrecord tr:not(.odd)").hide(); 
    $("#newrecord tr:first-child").show(); 

    $("#newrecord tr.odd").click(function() { 
     $("#newrecord tr:not(.odd)").show(); 
     $(this).next("tr").find("li").slideToggle("slow","swing", function(){ 
      //What to do on toggle compelte... 
     }); 
    }); 
}); 
+1

, ale funkcja jest wywoływana po każdym zsuwaniu, chcę funkcja może być wywołana tylko wtedy, gdy przesuwa się w górę –

+0

Doskonała odpowiedź; dokładnie to, czego potrzebowałem. Jedna mała rzecz do dodania to "swing" jest domyślna i jest prawdopodobnie opcjonalna. – Catto

0

Proszę spojrzeć na następujący kod

$(this).next("tr").find("li").slideToggle("slow","swing", function(){ 
    // here you code after toggle complete 
}); 
+1

ale funkcja jest wywoływana po każdym przesunięciu w dół, chcę, aby funkcja była wywoływana tylko wtedy, gdy przesunie się w górę –

1

Lwyrn jest poprawna, dodając trzeci parametr do wywołania slideToggle to zrobi. Aby uzyskać jeszcze większą kontrolę, możesz przekazać zwykły obiekt ze wszystkimi opcjami, które chcesz ustawić jako parametr (np. .slideToggle (opcje)). Możesz przeczytać więcej o tym, co te opcje można zrobić pod adresem: http://api.jquery.com/slideToggle/#slideToggle-options

Uważam, że warto przekazać obiekt, gdy nie chcę, aby animacja była w kolejce (jeśli użytkownik kliknie 50 razy bardzo szybko, animacja zostanie ułożona i trzymaj się przez jakiś czas przełączania - niepożądane zachowanie).

+1

, ale funkcja jest wywoływana po każdym przesunięciu w dół, chcę, aby funkcja była wywoływana tylko wtedy, gdy przesunie się w górę –

+0

I widzieć. Myślę, że należy podzielić wywołanie slideToggle na dwie części animacji: slideUp i slideDown. Następnie w instrukcji if określ, której funkcji animacji użyć w zależności od prawdy css ('visibility') === 'hidden'. Następnie możesz przekazać funkcję zwrotną do slideDown, tak jak poprzednio. Zobacz http://api.jquery.com/slideDown/ – TorranceScott

Powiązane problemy