0

ユーザーにメッセージを表示するこのシンプルな関数があります。タイムアウトパラメータを追加すると、ユーザーがそれをクリックして削除する必要がない場合は、自動的にスライドして戻ります。しかし、タイムアウトビットは機能していません。

function feedback(text, timeout){
    $('#feedback').text(text).slideDown('fast');

    $('#feedback').click(function(){
        $(this).slideUp();
    });
    if(timeout){
        setTimeout(function(){
            $('#feedback').slideup();
        }, timeout);
    }
}
4

2 に答える 2

3

問題は、そこに$('#feedback').slideup();資本が必要なことですU(例.slideUp())。これを行うことで、全体的に少し短くすることもできます。

function feedback(text, timeout){
    var fb = $('#feedback').text(text).slideDown('fast');
    if(timeout) fb.delay(timeout).slideUp();

    fb.click(function(){
        $(this).slideUp();
    });
}

これは、jQueryの組み込みdelay()機能を使用して、より簡潔な方法で同じ効果を実現します。

于 2010-03-29T16:01:57.350 に答える
-3

設定されたタイムアウト関数内に関数呼び出し全体を配置することは無効です。setTimeout は関数参照のみを受け入れるため、setTimeout は、必要に応じてトリガーされることはありません。

setTimeout(function(){
  $('#feedback').slideup();
}, timeout);

次のコードを試してください。

var ref = function() {
  $('#feedback').slideup();
};
setTimeout(ref, timeout);
于 2010-03-29T16:09:18.920 に答える