jquery setInterval和setTimeout不工作
我被困在这里…我试图在每次点击后关闭按钮5秒。。。 我可以关闭按钮,但在恢复时遇到问题 我试过了bith setIntervel和setTimeoutjquery 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).
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所说的操作,并在函数调用中传递该元素。