0

ボタンをクリックすると、実装したテキストメッセージを10秒間表示する必要があるjQueryタスクがあります。

問題は、テキストがまだ表示されている間です。同じボタンをクリックすると、タイマーがリセットされます (タイマーは 0 になり、テキストは再び 10 秒間表示されるはずです)。以下は私がしたことです。私が間違っていることを教えてもらえますか?

$('#mybtn').live('click', function(e){
   /*mybtn is the button
    mytext is the text that should appear
   */
   e.preventDefault();
   var $mytext = $('#mytext');
   if( $mytext.length >0){ //text is existing or showing
       $mytext.stop();
       $mytext.show().delay(10000).hide(500);
   }
   else{
       $mytext.show().delay(10000).hide(500);
  }

});
4

2 に答える 2

2

これを試して:

var timer;
$('#mybtn').on('click', function(e){   
   var $mytext = $('#mytext');    
   $mytext.show(500);
   clearTimeout(timer);   
   timer = setTimeout(function(){
       $mytext.hide(500)
    },10000);        
});

ここで働くフィドル:http://jsfiddle.net/jUkbh/

このフィドルもチェックしてください:http://jsfiddle.net/jUkbh/2/

于 2013-09-04T07:28:53.283 に答える
0

を使用する代わりに、 を使用delay(1000)する必要がありますwindow.settimeout

var time;
if( $mytext.length >0) {
    $mytext.stop();
    $mytext.show()
    cleartimeout(time);
    time=window.settimeout(
        function() {
            $mytext.hide(500);
        }, 1000);
}
于 2013-09-04T07:23:42.523 に答える