这是我的ajax
var $this = $(this);
$.ajax({
url: "process.php",
dataType: 'json' ,
data :{
method:'POST',
id :id ,
img_val : img_val},
type : 'POST',
success: function(output_data){
if (output_data.msg == 'taken'){
---> $this.val('Saved !').delay(3000).val('Save') ;
} }
});
实际上,标有--->
的代码无效,延迟直接显示Save
如果我删除delay(3000).val('Save')
,则会显示Saved !
我想要的是显示Saved !
然后等待3秒然后显示Save
。我怎么能实现这个目标? thnaks
$this
是按钮。
答案 0 :(得分:8)
<强> [更新] 强>
使用setTimeout(function(){ /* your code */},3000);
更新:如果您仍想使用jquery延迟,请按以下方式编写:
$('#dd').val('firstVal').delay(2000).queue(function(){$(this).val('SecondVal');}).delay(...;
<强> DEMO 强>
那是因为'delay()'的默认队列是'fx',它自动不包含val(),所以你只需要将它添加到它。
答案 1 :(得分:3)
var $this = $(this);
$.ajax({
url: "process.php",
dataType: 'json',
data: {
method:'POST',
id :id,
img_val : img_val
},
type: 'POST',
success: function(output_data) {
if (output_data.msg == 'taken') {
$this.val('Saved!');
setTimeout(function() { $this.val('Save'); }, 3000);
}
}
});
答案 2 :(得分:2)
使用 setTimeout(功能,时间)是最佳解决方案。
但是,如果您想要为按钮设置动画,则可以使用jQuery .animate()
var $this = $(this);
$this.val("Saved!").animate(
{ opacity: 0.99 }, //transition
2000, //duration
function() { //animation complete
$this.val("Save");
});