我有一个jQuery任务,点击一个按钮,我必须显示10秒的短信,我已经实现了。
现在的问题是文本仍然可见,如果我点击同一个按钮,它应该重置计时器(计时器应为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);
}
});
答案 0 :(得分: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/
答案 1 :(得分: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);
}