2016-07-30 9 views
0

は私のコードです:どうすれば "待って、処理しています..!"システム?ここ

function sleep (time) { 
 
    return new Promise((resolve) => setTimeout(resolve, time)); 
 
} 
 

 
$("body").on('click', '.fa-check', function(e) { 
 

 
    // sleep() emulates a short waiting time as ajax's request 
 
    sleep(1000).then(() => { 
 
    $('.fa-check').not(this).removeClass('checked'); 
 
    $(this).toggleClass('checked'); 
 
    }); 
 

 
});
.fa-check { 
 
    color: #aaa; 
 
    cursor: pointer; 
 
} 
 

 
.fa-check.checked { 
 
    color: #44b449; 
 
}
<script src="https://use.fontawesome.com/9e9ad91d21.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<p>answer1</p> 
 
<i class="fa fa-check" aria-hidden="true"></i> 
 
<hr> 
 
<p>answer2</p> 
 
<i class="fa fa-check checked" aria-hidden="true"></i> 
 
<hr> 
 
<p>answer3</p> 
 
<i class="fa fa-check" aria-hidden="true"></i>

私は私のコードにコメントしてきたように、私はアヤックスの要求として、短い待ち時間をエミュレートしました。ここで、ユーザーがの「処理中です」のいずれかのチェックアイコンをクリックすると、そのユーザーに表示されます。私はアイコンの下にこのようなPNGを使用することができます。enter image description here

しかし、私はを待っているように、そのチェックインのアイコンをオン/オフすることにより、(それが処理している)ことを時間をやりたいです。現在、チェックアイコンをクリックすると何も起こりません。1 secの後に緑色が変わります。今私はこの1 secのユーザーにを表示するために何かしたい "システムが動作しています、しばらくお待ちください..."

このチェックアイコンをオン/オフにするとよいでしょう。誰も私はそれをどうやって行うことができますか?

編集:私は画像を使用しません。私はちょうどそのチェックアイコンの色を変更したい。点灯して消灯するランプのように。

+0

期待される効果は何ですか? '.fa-check'をクリックすると、クリックされた要素は' className'が 'checked'して色が緑色に変わり、1秒後に' className'が追加されます。 – guest271314

+0

@ guest271314 1.ユーザーがこれらのアイコンの1つをクリックします。 2.そのアイコンが鳴り始める。 3.しばらくすると(この場合1秒)*点滅が止まります。 4.その後、 'checked' classNameが追加されます。 – stack

答えて

0
  1. ユーザーがこれらのアイコンの一つをクリック完了だときにそれを隠します。 2.そのアイコンが鳴り始める。 3.しばらくすると(この場合は1秒)点滅が止まります。 4.次にチェックされた classNameが追加されます。あなたはxが倍.fadeToggle()の数がsleep()コール

    function sleep (time) { 
     
        return new Promise((resolve) => setTimeout(resolve, time)); 
     
    } 
     
    
     
    function blink (time) { 
     
        $(this).fadeToggle(time, function() { 
     
        if (++n < t) { 
     
         return blink.call(this, time) 
     
        } else { 
     
         n = 0; 
     
        } 
     
        }) 
     
    } 
     
    
     
    var duration = 1000; 
     
    var n = 0; 
     
    var t = 10; 
     
    var blinks = duration/t; 
     
    
     
    $("body").on('click', '.fa-check', function(e) { 
     
        // sleep() emulates a short waiting time as ajax's request 
     
        $.when(blink.call(this, blinks), sleep(duration)) 
     
        .then(() => { 
     
        $('.fa-check').not(this).removeClass('checked'); 
     
        $(this).toggleClass('checked'); 
     
        }); 
     
    
     
    });
    .fa-check { 
     
        color: #aaa; 
     
        cursor: pointer; 
     
    } 
     
    
     
    .fa-check.checked { 
     
        color: #44b449; 
     
    }
    <script src="https://use.fontawesome.com/9e9ad91d21.js"></script> 
     
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
     
    
     
    <p>answer1</p> 
     
    <i class="fa fa-check" aria-hidden="true"></i> 
     
    <hr> 
     
    <p>answer2</p> 
     
    <i class="fa fa-check checked" aria-hidden="true"></i> 
     
    <hr> 
     
    <p>answer3</p> 
     
    <i class="fa fa-check" aria-hidden="true"></i>

    中に "ウインク" または点滅効果をシミュレートするために呼び出されるべきれる1000/xに設定した時間で.fadeToggle()を使用することができます

+0

それは完璧です.... – stack

+0

ちょうど2つの質問:1.なぜあなたは 'blink'関数に' time'パラメータを渡しましたが、それを使用しませんでしたか?なぜあなたは 'n'と' t'変数を定義し、それらを使用しませんでしたか? – stack

+0

'n'と' t'が使用されている場合、 'duration/t'ではなく' blink'で 'time'を使うようにポストを更新するか、むしろ' duration/t'として 'blinks'を定義します。 – guest271314

0

これは正直なところ非常に簡単ですが、読み込みイメージのみを持つdivを作成してください。

<div id="loading_image"> 
<img src="loader.gif"> 
</div> 

今とすぐにjQueryの要求が開始されたとして、それを表示し、

$("body").on('click', '.fa-check', function(e) { 
    //show the loader 
    $("#loading_image").show(); 
    // sleep() emulates a short waiting time as ajax's request 
    sleep(1000).then(() => { 
    $('.fa-check').not(this).removeClass('checked'); 
    $(this).toggleClass('checked'); 
    //hide loader now 
    $("#loading_image").hide(); 
    }); 

}); 
+0

私は私の質問をはっきりと聞かなかったと思う。私はイメージを使用したくない。私はちょうどそのチェックアイコンの色を変更したい。点灯して消灯するランプのように。 – stack

+0

@stack あなたは何をしたいのライブの例がありますか? – Akshay

+0

@ guest271314の答えはライブの例です: ')' ...とにかくあなたのソリューションに感謝します。 – stack

関連する問題