2013-07-31 83 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"); 
    }); 
}); 

下面先隱藏所有偶數行,當我們點擊奇數行時,它顯示偶數行和幻燈片下載每行的li內容。當我再次點擊li標籤時,我需要幫助,因爲我需要它,但它也應該隱藏該行。即應該在上移後調用行上的隱藏功能。slidetoggle完成後的通話功能

+0

如果沒有jQuery,_poor_程序員會做什麼? _(使用zepto?)_ –

+0

通過查看官方的jQuery文檔,您可以找到您的答案http://api.jquery.com/slideToggle/ –

回答

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

,但是每次滑下時都會調用該函數,我希望函數只在滑動時才被調用 –

+0

優秀的答案;正是我需要的。要添加的一點小事是「擺動」是默認的,可能是可選的。 – Catto

0

請看看下面的代碼

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

但函數每次滑落時都會調用,我希望只在函數滑過時調用函數 –

1

Lwyrn是正確的,加入第三個參數的slideToggle通話將做到這一點。爲了獲得更多的控制權限,你可以傳遞一個普通的對象和所有你希望作爲參數的選項(例如.slideToggle(options))。你可以閱讀更多關於這些選項可以做些什麼:http://api.jquery.com/slideToggle/#slideToggle-options

我發現當我不想讓動畫排隊時傳遞對象很有用(如果用戶快速點擊50次,動畫將堆疊並且不停地切換一段時間 - 不受歡迎的行爲)。

+1

,但函數每次滑下時調用函數,我只希望在函數滑過時調用函數 –

+0

看到。我認爲你應該將slideToggle調用分成動畫的兩部分,slideUp和slideDown。然後在一個if語句中,根據css('visibility')==='hidden'的真值確定使用哪個動畫函數。然後,您可以像以前一樣將回調函數傳遞給slideDown。請參閱http://api.jquery.com/slideDown/ – TorranceScott