Javascript 如何设置setTimeout和clearTimeout在同一个按钮上运行
这是我的密码Javascript 如何设置setTimeout和clearTimeout在同一个按钮上运行,javascript,jquery,onclick,Javascript,Jquery,Onclick,这是我的密码 $('#btnDelete').unbind().click(function(){ var time = setTimeout(function() { $.ajax({ type: 'ajax', method: 'get', async: false, url: '<?php echo base_url() ?>main/delete',
$('#btnDelete').unbind().click(function(){
var time = setTimeout(function() {
$.ajax({
type: 'ajax',
method: 'get',
async: false,
url: '<?php echo base_url() ?>main/delete',
data: {id:id},
dataType: 'json',
success: function(response){
if(response.success){
showNews();
} else {
alert('Error');
}
},
error: function(){
alert('Error deleting')
}
});
}, 10000);
});
在哪里可以放置clearTimeout功能,以便每次单击同一按钮时计时器都会重置?谢谢 使用数据属性保存计时器的状态。您可以使用“数据”属性来确定是否需要取消它。将超时id存储到数据属性中,然后单击以检查超时id
$('#btnDelete').unbind().click(function(){
var btn = $(this); // reference the button that was clicked
if (btn.data("timer")) { // determine if it was already clicked
window.clearTimeout(btn.data("timer")) // cancel the timeout
btn.data("timer", null); // toggle it to not being used
} else {
var time = setTimeout(function() {
btn.data("timer", null); // reset it if you want
/* your code here */
}, 10000)
btn.data("timer", time); // store the timeout id for next click
}
});
如果希望它重新启动,则不要执行else,并且无需将数据属性设置为null,因为您将覆盖它
$('#btnDelete').unbind().click(function(){
var btn = $(this);
if (btn.data("timer")) {
window.clearTimeout(btn.data("timer"))
}
var time = setTimeout(function() {
btn.data("timer", null); // reset it if you want
/* your code here */
}, 10000)
btn.data("timer", time);
});
在多个按钮上运行的示例
$'.btn delete'.unbind.clickfunction{
var btn=$this;//引用单击的按钮
如果btn.datatimer{//确定是否已单击它
window.clearTimeoutbtn.datatimer//取消超时
btn.datatimer,null;//将其切换为不使用
}否则{
var time=setTimeoutfunction{
btn.datatimer,null;//如果需要,请重置它
btn.textnew Date.ToLocalString
}, 3000
btn.datatimer,time;//存储下一次单击的超时id
}
};
删除1
删除2
删除3
删除4尝试以下操作:
var time;
$('#btnDelete').unbind().click(function() {
if (time) {
clearTimeout(time);
time = null;
}
time = setTimeout(function() {
$.ajax({
type: 'ajax',
method: 'get',
async: false,
url: '<?php echo base_url() ?>main/delete',
data: {
id: id
},
dataType: 'json',
success: function(response) {
if (response.success) {
showNews();
} else {
alert('Error');
}
},
error: function() {
alert('Error deleting')
}
});
}, 10000);
});
将时间设置为全局变量或可在单击处理程序外部访问。检查时间值,如果它有任何值,则重置它,否则您的正常代码将正常工作。可能重复感谢!你的代码可以工作。但我如何使它适用于多个记录?我目前有一个数据库,其中有4条记录,所有记录都有各自的按钮,用于设置和重置计时器。代码应该适用于每个按钮。您也可以将其绑定,因为计时器绑定到按钮,并且不使用全局变量。尝试连续按下4个按钮,只有最后按下的按钮才会执行上面的代码绑定到一个id,id只能是页面上的一个元素。。。你换了选择器了吗?我不知道你试了什么,很难帮上忙。。。。您是如何更改代码的?