我想要一个按钮,1秒后弹出。而且当它没有弹出时,您将无法按下它
$(document).ready(function(){
var pressed1 = false;
// Audio-Element 'audioElement' gets declared
$('#button1').bind("contextmenu",function(e){
if(!pressed1){
audioElement.play();
pressed1 = true;
$('#button1').css({backgroundImage: "url(img/button_pressed.png)"});
setTimeout('$("#button1").css({backgroundImage: "url(img/button.png)"}); pressed1 = false;', 1000);
return false;
}else{
return false;
}
});
});
按钮在 1 秒后弹出,"按下 1"设置为"假",但我无法再次按下按钮。即使被 javascript 控制台将"按下 1"设置为"false"!
正如@Mash建议的那样,请尝试以下操作:
$(document).ready(function(){
var pressed1 = false;
// Audio-Element 'audioElement' gets declared
$('#button1').bind("contextmenu",function(e){
if(!pressed1){
audioElement.play();
pressed1 = true;
$('#button1').css({backgroundImage: "url(img/button_pressed.png)"});
setTimeout(function() {
$("#button1").css({backgroundImage: "url(img/button.png)"});
pressed1 = false;
}, 1000);
return false;
}else{
return false;
}
});
});
我相信,当您将setTimeout
与要评估的代码字符串而不是函数一起使用时,代码会使用 eval()
在内部进行评估,它具有不同的范围(无法访问闭包中的变量(。
这是因为变量pressed1
是此处所示ready()
方法的区域设置,您使用此处所示的setTimeout
设置它 false
值设置为名为pressed
而不是您在函数中测试的全局变量