0

我被困在这里......我试图在每次点击后使按钮处于非活动状态 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);
              } 
          }); 


});
4

2 回答 2

1

this可能没有定义,试试:

function reverser(){
   $(".vtbtn").css("background","url(images/btn_active.gif) no-repeat 0 0");
}

然后像这样调用函数:

setInterval(reverser, 3000);

而且你真的需要每三秒运行一次那个函数吗,在Ajax调用完成后运行还不够吗?

于 2012-04-16T13:12:36.723 回答
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变量传递给resverser函数。

于 2012-04-16T13:14:33.527 回答