我正在搞乱jQuery的AJAX函数,并试图模拟真实服务器如何延迟我在本地主机上获得的平滑数据请求.
所以我编写的代码类似于:
$('form').submit(function (event) {
event.preventDefault();
$('#response').html('<p>Posting...</p>').fadeIn().delay(2000).queue(function () {
$.post (
'some_url.php',
{/*values here*/},
function (response) {
$('#response').html(response).delay(1000).fadeOut('slow');
//The line below is to reset the form element
$('input[type="text"], textarea').val(' ');
});
});
});
Run Code Online (Sandbox Code Playgroud)
我在这里基本上做的是将$ .post方法延迟2秒,以便可以看到"发布..."消息.当2秒完成时,我希望文本随着我得到的响应而改变,保持静止1秒,我希望它淡出.
第一个延迟工作完美,Ajax调用工作也完美,问题是 - 从某种原因,第二个延迟没有被读取,响应消息,一旦显示,拒绝消失:)
我的问题是为什么会发生这种情况,我该如何解决?
您需要出队才能处理队列中的下一个事物。
http://api.jquery.com/jQuery.dequeue/
编辑:或者next在 1.4 或更高版本中:
在 jQuery 1.4 中,被调用的函数作为第一个参数传递到另一个函数中,该函数在调用时会自动使下一个项目出队并保持队列移动。你会像这样使用它:
$("#test").queue(function(next) {
// Do some stuff...
next();
});
Run Code Online (Sandbox Code Playgroud)
来自: http: //api.jquery.com/queue/
| 归档时间: |
|
| 查看次数: |
230 次 |
| 最近记录: |