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 !').delay(3000).val('Save') ;


               }               }
         }); 

実際には、 でマークされたこのコードは、--->直接表示される遅延で機能しませんでしたSave

delay(3000).val('Save')表示を削除するとSaved !

私が欲しいのは、表示Saved !してから3秒待ってから表示することSaveです。どうすればこれを達成できますか? タナクス

$thisはボタンです。

4

3 に答える 3

8

[更新] 使用setTimeout(function(){ /* your code */},3000);

update : jquery 遅延を引き続き使用する場合は、次のように記述します。

$('#dd').val('firstVal').delay(2000).queue(function(){$(this).val('SecondVal');}).delay(...;

デモ

これは、'delay()' のデフォルト キューが 'fx' であり、val() が自動的に含まれないため、追加するだけで済みます。

于 2013-06-27T01:14:39.393 に答える
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);
        }
    }
}); 
于 2013-06-27T01:17:46.507 に答える
2

setTimeout( function , time )を使用するのが最善の解決策です。
ただし、ボタンをアニメーション化したい場合は、jQuery .animate()で作成できます

var $this = $(this);
$this.val("Saved!").animate(
    { opacity: 0.99 }, //transition
    2000, //duration
    function() { //animation complete
        $this.val("Save");
    });
于 2013-06-27T02:08:54.130 に答える