Javascript 点击一个AJAX链接
是否可以取消链接点击的影响?如果用户在pjax链接上点击次数过多或点击速度过快,将会中断新内容的加载Javascript 点击一个AJAX链接,javascript,jquery,ajax,debounce,Javascript,Jquery,Ajax,Debounce,是否可以取消链接点击的影响?如果用户在pjax链接上点击次数过多或点击速度过快,将会中断新内容的加载 $(document).on('click', 'a[data-pjax]', loadNewContent); var $target = $('main.content section.context'), $fake = $('main.fake'), $fakeContext = $('main.fake section.context'); function loadNewCont
$(document).on('click', 'a[data-pjax]', loadNewContent);
var $target = $('main.content section.context'),
$fake = $('main.fake'),
$fakeContext = $('main.fake section.context');
function loadNewContent() {
event.preventDefault();
var $this = $(this),
url = $this.attr('href');
$fake.addClass('is--loading');
$.pjax({
url: url,
fragment: 'body',
container: $fakeContext
});
$fake.one(transitionEnd, function() {
$target.html($fake.find('section.context').html());
$fake.removeClass('is--loading');
$fake.off(transitionEnd);
});
}
有什么想法吗?我试过了,但它阻止了loadNewContent的启动。()
类似这样的方法会奏效:
var callWaiting = false;
callAjax() {
if(!callWaiting) {
callWaiting = true;
makeHttpCall(url, data, function(response) {callWaiting = false;});
callWaiting = false;
}
}
类似这样的方法会奏效:
var callWaiting = false;
callAjax() {
if(!callWaiting) {
callWaiting = true;
makeHttpCall(url, data, function(response) {callWaiting = false;});
callWaiting = false;
}
}
如果在触发时将标志设置为“挂起”,在收到响应时将标志设置为“完成”,该怎么办。@BinarieMet是的,听起来好像可以工作。你能详细解释一下吗?@ProfessorAllman抱歉,我更新了我的debounce方法…请参阅一般解释这是什么
$.debounce()
函数?是你写的还是一个插件?如果是您编写的,请提供代码,如果不是,请告诉我们它是哪个插件……如果您在触发时将标志设置为“挂起”,并在收到响应时将其设置为“完成”,该怎么办?@binariedMe是的,听起来它可以工作。你能详细解释一下吗?@ProfessorAllman抱歉,我更新了我的debounce方法…请参阅一般解释这是什么$.debounce()
函数?是你写的还是一个插件?如果是您编写的,请提供代码,如果不是,请告诉我们它是哪个插件…我已经尝试将其实现到我的loadNewContent()中,但似乎没有帮助。您在代码中从哪里获得对您正在进行的呼叫的响应?顺便说一句,我已经更新了逻辑。希望这能解决问题是的。我想我现在明白了。谢谢我已经尝试在loadNewContent()中实现了这一点,但似乎没有任何帮助。对于正在进行的调用,您在代码中从哪里获得响应?顺便说一句,我已经更新了逻辑。希望这能解决问题是的。我想我现在明白了。谢谢