К чему я должен прикрепить метод «ajaxStart»? - PullRequest
1 голос
/ 18 августа 2011

Я бы хотел проверить наличие каких-либо ожидающих событий Ajax в скрипте, например:

$('nav a').click(function(){
    var url = $(this).attr('href');
    $('#content').load(address,function(){
        //do some stuff when complete
    });
});

Теперь, если дважды щелкнуть навигацию, оба запроса будут выполнены, и я по сутихочу предотвратить это.jQuery предлагает методы .ajaxStart() и .ajaxStop(), но мне не нужно манипулировать DOM, поэтому я не совсем понимаю, на какой объект их вызывать.Я думал об использовании переменной вместо:

var busy = false;
$(busy).ajaxStart(function(){this=true});
// etc...

С

$('nav a').click(function(){
    if(busy==false){
        var url = $(this).attr('href');
        $('#content').load(address,function(){
            //do some stuff when complete
        });
    }
    else return false;
});

Но:

  1. Это законно?
  2. Есть более простой / более простой способ сделать это?

1 Ответ

3 голосов
/ 18 августа 2011

Правильный способ сделать это в javascript следующий:

(function() {
    var buzy = false;
    $('nav a').click(function(){

        if (buzy) return;
        buzy = true;

        var url = $(this).attr('href');
        $('#content').load(address,function(){
            //do some stuff when complete
            buzy = false;
        });
    });
}());

Чтобы ответить на исходный вопрос, ajaxStart может быть привязано к document:

$(document).ajaxStart(function() {
    buzy++;
});
$(document).ajaxStop(function() {
    buzy--;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...