我被困在这里...我试图在每次点击后停用按钮5秒钟... 我可以使按钮无效,但在将其带回时会遇到麻烦 我尝试了bith setIntervel和setTimeout
function reverser(){
$(this).css("background","url(images/btn_active.gif) no-repeat 0 0");
}
$(".vtbtn").click(function() {
var link =$(this).attr('id');
$(this).css("background","url(images/btn_inactive.gif) no-repeat 0 0");
$.ajax({
type: "POST",
url: "sql.php",
data:"voted=" +link+"&user="+<?php echo $userId;?>,
success: function(data){
setInterval('reverser()',3000);
}
});
});
答案 0 :(得分:1)
this
,请尝试:
function reverser(){
$(".vtbtn").css("background","url(images/btn_active.gif) no-repeat 0 0");
}
然后像这样调用函数:
setInterval(reverser, 3000);
你真的需要每三秒运行一次这个功能,是不是只能在Ajax调用完成后运行?
答案 1 :(得分:1)
this
不会引用被单击的元素。更改您的代码以传递该元素:
function reverser(ele){
$(ele).css("background","url(images/btn_active.gif) no-repeat 0 0");
}
$(".vtbtn").click(function() {
var link =$(this).attr('id');
var that = this; // save this
$(that).css("background","url(images/btn_inactive.gif) no-repeat 0 0");
$.ajax({
type: "POST",
url: "sql.php",
data:"voted=" +link+"&user="+<?php echo $userId;?>,
success: function(data){
setTimeout(function() {
reverser(that);
},3000);
}
});
});
我更改了它,以便setTimeout传递一个函数而不是一个字符串(这将导致调用eval
,这是邪恶的),以便that
变量可以传递给{ {1}}功能。