2017-03-23 5 views
0

リンクのクリックをデバウンスすることはできますか?ユーザーがpjaxリンク上でクリックする回数が多すぎると、新しいコンテンツの読み込みが中断されます。AJAXリンクをデバウンスでクリックする

$(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の起動を停止しました。このような(https://github.com/cowboy/jquery-throttle-debounce

$(document).on('click', 'a[data-pjax]', $.debounce(1000, true, function() { 
    loadNewContent(); 
})); 
+0

何がトリガされ、応答が受信されたときに行うに設定すると、保留中にフラグを設定している場合。 – binariedMe

+0

@binariedMeはい、うまくいくように聞こえます。あなたは詳しく説明できますか? –

+0

@ProfessorAllmanデバウンスメソッドを更新して申し訳ありません... –

答えて

2

何かが働くだろう:

var callWaiting = false; 
callAjax() { 
    if(!callWaiting) { 
    callWaiting = true; 
    makeHttpCall(url, data, function(response) {callWaiting = false;}); 
    callWaiting = false; 
    } 
} 
+0

私は、私はこれを私のloadNewContent()に実装しようとしましたが、役に立たないようです。 –

+0

あなたが行っているコールのコードでは、どこで回答が得られますか? – binariedMe

+0

私はロジックを更新しました。問題を解決する希望 – binariedMe

関連する問題