我想要一个按钮,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秒后弹出,'pressed1'设置为'false',但我无法再次按下按钮。即使javascript控制台将'pressed1'设置为'false'也是如此!
答案 0 :(得分:4)
正如@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()
进行评估,而{{1}}具有不同的范围(不是有权访问你的闭包中的变量。)
答案 1 :(得分:1)
这是因为变量pressed1
是此处显示的ready()
方法的区域设置,您可以使用setTimeout
进行设置,如此处所示false
值已设置到名为pressed
的全局变量,而不是您在函数中测试的变量