我有這樣的代碼延遲上(「點擊」)事件
$("input").on('keyup', function() {
$("block"),slideDown("slow")......
問題是taht當我寫的快速塊將再次和比我寫的阿恩慢得多做了「動漫」
有沒有另一個事件可以用來在代碼完成後運行代碼?我們可以說,我停止編寫代碼,然後執行代碼500ms,然後執行代碼。
我有這樣的代碼延遲上(「點擊」)事件
$("input").on('keyup', function() {
$("block"),slideDown("slow")......
問題是taht當我寫的快速塊將再次和比我寫的阿恩慢得多做了「動漫」
有沒有另一個事件可以用來在代碼完成後運行代碼?我們可以說,我停止編寫代碼,然後執行代碼500ms,然後執行代碼。
像這樣的事情是我用什麼之前:
$(input).keyup(onKeyUp);
/**
* Handler for the keyup event
*/
function onKeyUp() {
//reset
clearTimeout(myTimer);
myTimer = setTimeout(otherFunction, 500);
}
現在otherFunction會在500毫秒之後被調用,但是每個keyup事件定時器將被重置。
function throttle(fn, time){
var timer = 0;
return function() {
clearTimeout(timer);
timer = setTimeout($.proxy(fn, this), time);
};
}
$("input").on('keyup', throttle(function() {
$("block").slideDown("slow")
},500));
節氣門返回一個新函數,該函數在函數上次調用後經過500毫秒後調用舊函數。
嘗試使用...
function slideDown(){
...
}
// call
setTimeout(function(){ slideDown(); }, 1000);
你剛剛遭受W3Schools的考驗:不要將字符串傳遞給'setTimeout'。而且,你的代碼只是延遲了這個功能 - 它並沒有考慮到「停止寫入」。 – pimvdb 2012-07-18 10:20:48
你能不能用時,'input'失去焦點,並且其值發生了變化,這將觸發'change'事件? – 2012-07-18 10:06:57