jquery setInterval和setTimeout不工作

jquery setInterval和setTimeout不工作,jquery,Jquery,我被困在这里…我试图在每次点击后关闭按钮5秒。。。 我可以关闭按钮,但在恢复时遇到问题 我试过了bith setIntervel和setTimeout function reverser(){ $(this).css("background","url(images/btn_active.gif) no-repeat 0 0"); } $(".vtbtn").click(function() { var link =$(this).

我被困在这里…我试图在每次点击后关闭按钮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);
              } 
          }); 


});
函数反向器(){
$(this.css(“背景”,“url(images/btn_active.gif)不重复0”);
}
$(“.vtbtn”)。单击(函数(){
var link=$(this.attr('id');
$(this.css(“背景”,“url(images/btn_inactive.gif)不重复0”);
$.ajax({
类型:“POST”,
url:“sql.php”,
数据:“投票数=”+链接+”&用户=”+,
成功:函数(数据){
设置间隔('reverser()',3000);
} 
}); 
});

可能未定义,请尝试:

function reverser(){
   $(".vtbtn").css("background","url(images/btn_active.gif) no-repeat 0 0");
}
然后像这样调用函数:

setInterval(reverser, 3000);

您真的需要每三秒运行一次该函数吗?在Ajax调用完成后运行该函数还不够吗?

您的reverser函数中的此
不引用已单击的元素。将代码改为传入该元素:

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);
          } 
      }); 
});
功能反转器(ele){
$(ele.css(“背景”,“url(images/btn_active.gif)不重复0”);
}
$(“.vtbtn”)。单击(函数(){
var link=$(this.attr('id');
var that=this;//保存此
css(“背景”,“url(images/btn_inactive.gif)不重复0”);
$.ajax({
类型:“POST”,
url:“sql.php”,
数据:“投票数=”+链接+”&用户=”+,
成功:函数(数据){
setTimeout(函数(){
反向器(该);
},3000);
} 
}); 
});

我更改了它,以便setTimeout被传递一个函数而不是一个字符串(这将导致调用
eval
,这是邪恶的),这样
that
变量就可以被传递到
resverser
函数中。

如果
vtbtn
类中有多个元素呢?谢谢它能工作……但是为什么呢$(此)函数在我的第一个函数中工作时不工作?。我想我得到了它。然后必须在函数中传递元素。
$(此)
由在元素上调用的函数定义,第二个函数不在特定元素上调用,因此
没有上下文。如果对同一类使用多个元素,并针对特定元素,则必须按照@richarddolton所说的操作,并在函数调用中传递该元素。