2013-02-23 91 views
0

我在JavaScript和JQuery一個初學者,我試圖行使東西的JavaScript的JQuery的setTimeout

var activetab = 0; 

$("li").click(function() { 
    $("#tabs-"+activetab).hide("slide", { direction: "left" }, 1000); 
    $("li").eq(activetab).css('background-color','white'); 
    var index = $("li").index(this); 
    $("span").text(index); 
    $("li").eq(index).css('background-color','red'); 
    $("#tabs-"+index).show("slide", { direction: "left" }, 1000); 
    activetab = index; 
}); 

這裏是我的小提琴:

http://jsfiddle.net/6WC4J/

的問題是,我想顯示方法啓動一段時間後,以便當以前的元素將被隱藏,然後新的將顯示, 嘗試使用setTimeout,但沒有工作,任何想法?

由於總體

+1

您可以通過一個完整的* *回調'.hide'。請查看文檔:http://api.jquery.com/hide/。 – 2013-02-23 11:00:46

+0

這實際上是我現在想的,會嘗試這個併發布一些更新 – Gan 2013-02-23 11:03:29

回答

1

您可以使用complete回調.hide()方法上發射的.show()動畫。

$("#tabs-" + activetab).hide("slide", { 
    direction: "left" 
}, 1000, function(){ 
    $("#tabs-" + index).show("slide", { 
     direction: "left" 
    }, 1000); 
    activetab = index; 
}); 

這樣你就不需要使用setTimeout並且同步是無縫的。

See it here.

1

你必須使用回調:

$("#tabs-" + activetab).hide("slide", { 
    direction: "left" 
}, 1000, function(){ 
    // this will be called after the element is completely hidden. 
}); 

參考:​​

+0

我相信你想鏈接到[jQuery UI的'.hide()'文檔](http://api.jqueryui.com/hide/)代替。注意,jQuery的'.hide()'不提供相同的功能 – Alexander 2013-02-23 11:28:37