[英]Jquery how to turn .off() to .on()
我有Jquery
click事件,我想在执行我的函数UpdateItemStatus(this.id);
之前防止多次click
UpdateItemStatus(this.id);
,所以我尝试使用开/关事件在以下代码中进行尝试,
$('#tableItems').on('click', 'tr', function (e) {
if ($(e.target).closest("td").hasClass("cssClick")) {
$(this).off(e);
UpdateItemStatus(this.id);
$(this).on(e);
}
});
但是我怎么转。 on
? 由于它无法正常工作,因此无法再次单击。
如何拥有一个全局变量来决定按钮的单击动作?
像这样吗
var clickevent = true;
$('#tableItems').on('click', 'tr', function (e) {
if(clickevent){
if ($(e.target).closest("td").hasClass("cssClick")) {
clickevent = false;
UpdateItemStatus(this.id);
clickevent = true;
}
}
});
如果UpdateItemStatus
函数具有Ajax,则我建议您将clickevent = true
放入该Ajax的成功内部
您无需为代码使用off()。 使用return false:
$('#tableItems').on('click', 'tr', function (e) {
if ($(e.target).closest("td").hasClass("cssClick")) {
return false;
} else{
//do stuff here
}
});
我可能会使用这样的东西:
var inputstate = false;
$('#tableItems').on('click', 'tr', function (e) {
if ($(e.target).closest("td").hasClass("cssClick")) {
if(!inputstate){
inputstate = true;
setTimeout((function(element){
return function(){
UpdateItemStatus(element);
inputstate = false;
};
})(this),50);
}
}
});
setTimeout用于“延迟呼叫” UpdateItemStatus函数。 因为如果触发了此侦听器(不能同时触发另一个侦听器),则布尔值将更改为结束状态,然后再处理下一次单击
似乎您的UpdateItemStatus()
使用了一些异步调用(ajax?),所以这是我的方法:
$('#tableItems').on('click', 'tr', function (e) {
var $td = $(e.target).closest("td");
if ($td.hasClass("cssClick")) {
$td.toggleClass("cssClick");
UpdateItemStatus(this.id).done(function(){
$td.toggleClass("cssClick");
});
}
});
并在UpdateItemStatus中:
function UpdateItemStatus(id){
//do stuff
return $.ajax(...);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.