我有一个div列表,每当我点击它们时我调用一个函数,一些触发其他ajax函数。 现在,当click甚至触发一个ajax事件时,如果我点击另一个div,我会调用最后一个div函数。如何解决这个问题。
document.addEventListener("click",function(event){
checkparent(event);
}
function checkpaternt(event){
if(($(event.target).class=="checkparent"){//call ajax functions
}
else {//call local functions}
稍后我检查目标的类名并调用不同的函数。 更多信息(有很多div元素和if else语句) 谢谢。
答案 0 :(得分:1)
我认为以下示例可能会对您有所帮助。
callbacks = [$.Deferred(), $.Deferred()];
obj1.on('click', callbacks[0].resolve);
obj2.on('click', callbacks[1].resolve);
$.when(callbacks).done(function() { console.log('After to events done'); });
这里我创建了两个延迟对象。
每个事件都会解析一个延迟对象。
当这些所有延迟对象将被解析为下一个函数时,您可以在.done()
答案 1 :(得分:1)
使用布尔标志:(并修复代码)
function checkparent(event) {
if (ajaxRequestOn) return;
if (event.target.className == "checkparent") {
ajaxRequestOn = true;
//call ajax functions
$.ajax( /* ...*/ ).always(function () {
ajaxRequestOn = false;
});
} else {
//call local functions
}
}
答案 2 :(得分:0)
我认为element.type
会对您有所帮助,
<强> HTML 强>
<input type="text" id="tipo-imovel" />
<强>脚本强>
$("#tipo-imovel").on("click change", function(event){
alert(event.type + " is fired");
});
此代码将提醒已触发的事件
我建议您查看this possible events
如果有帮助,请告诉我
答案 3 :(得分:0)
这可能会有所帮助:jQuery queues。请在下面查看相关报价:
如何在此处使用jQuery队列
工作示例
This是一个使用队列进行自定义ajax调用的惊人资源。我知道归档链接内容的SO偏好,但我不能在这里真正复制代码,所以我也做了一个显示自定义队列的小提示 - here
该示例使用文本颜色更改,但可以轻松地进行任何AJAX调用。 setTimeout
有一个类似于许多AJAX调用的异步回调,这个小提琴应该是一个有用的模板......
理论
$('#elementId').click(function (e) {
var $element = $(e.currenttarget);
$element.queue('myqueue', function () {
var $el = $(this);
//Do stuff on $el
//Remove this event from the queue and process next...
$el.dequeue();
});
});
打破这个局面:
如果您希望两个事件之间存在差距,您甚至可以将出队时间设置为window.setTimeout(500, function () { $this.dequeue(); });
之类的超时,这会在下一个事件之前设置500毫秒...
jQuery队列文档
此功能类似于提供带回调函数 动画方法,但不要求给出回调 动画执行的时间。
$( "#foo" ).slideUp(); $( "#foo" ).queue(function() {
alert( "Animation complete." );
$( this ).dequeue();
});
这相当于:
$( "#foo" ).slideUp(function() {
alert( "Animation complete."
); });
请注意,在使用.queue()添加函数时,我们应该这样做 确保最终调用.dequeue()以便下一个函数 在线执行。
更新答案已被修改为包括一个工作小提琴和一些解释。