Javascript 点击一个AJAX链接

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

是否可以取消链接点击的影响?如果用户在pjax链接上点击次数过多或点击速度过快,将会中断新内容的加载

$(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()中实现了这一点,但似乎没有任何帮助。对于正在进行的调用,您在代码中从哪里获得响应?顺便说一句,我已经更新了逻辑。希望这能解决问题是的。我想我现在明白了。谢谢