2011-12-07 203 views
0

3秒後...提示提示不顯示。我究竟做錯了什麼?jQuery延遲三秒後不工作

$(function() { 
    $("#test").live("click",function() { 
     $("#test2").delay(3000, function({ 
      alert('Hello!'); 
     })); 
     }); 
    }); 
+3

我討厭這樣說,但RTFD,你會看到'.delay()'根本沒有這樣的工作:http://api.jquery.com/delay –

+0

@weka:即使你使用'.delay()'是正確的,你的語法被破壞了。這部分無效:'function({alert('Hello!');})' – RightSaidFred

回答

5

.delay()不接受回調。使用setTimeout

$(function() { 
    $("#test").live("click",function() { 
     setTimeout(function() { alert('Hello!'); }, 3000); 
    }); 
}); 

我可以告訴你你怎麼可以技術上使其與.delay()工作,但鑑於您的例子,它只是是不恰當的。

0

我相信jQuery延遲是用來延遲下一個鏈接函數調用。您應該使用setTimeout代替

$("#test").live("click",function() { 
    setTimeout(function(){ 
     alert('Hello!'); 
    }, 3000); 
});
0

.delay()只適用於使用動畫隊列像fadeIn() jQuery效果的方法,等等。而且,.delay()不接受回調。

你將不得不使用setTimeout()這樣的:

$(function() { 
    $("#test").live("click",function() { 
     setTimeout(function() { 
      alert('Hello!'); 
     }, 3000); 
    }); 
}); 
2

這種例子並不記載,delay()接受這種形式的參數。

$(function() { 
    $("#test").live("click", function() { 
     setTimeout(function() { 
      alert('Hello!'); 
     }, 3000); 
    }); 
}); 

事實上,delay()文檔中,有大膽聲明;

.delay()方法最適合延遲排隊的jQuery效果。因爲它是有限的 - 例如,它不提供取消延遲的方法.delay()不是JavaScript本地setTimeout函數的替代品,這對於某些用例可能更合適。

+0

+1包含文檔鏈接和最相關的部分。 – RightSaidFred