Почему функции jQuery работают только при первом вызове? - PullRequest
0 голосов
/ 11 марта 2011

Существует ссылка, которая при нажатии переключает между загрузкой HTML в div и очисткой div.Когда щелкают по div, чтобы загрузить html, я использую функцию jQuery ajax load ().Когда текст загружается, я хочу отобразить «Пожалуйста, подождите ...», поэтому я попытался использовать методы jQuery ajaxStart () и ajaxStop (), но они, казалось, работали только при первом вызове функции load ().Поэтому я переключился на ajaxSend () и ajaxSuccess, но это также, похоже, работает только при первом вызове функции загрузки.Что не так?

HTML:

<p id="toggleDetail" class="link">Toggle Inspection Detail</p>
<p id="wait"></p>
<div id="inspectionDetail"></div>

jQuery:

$(
    function(){
        $('#toggleDetail').click(function(){
            if($.trim($('#inspectionDetail').text()).length)
            {
                $('#inspectionDetail').empty();
            }
            else
            {
                $('#inspectionDetail').load('srInspectionDetailFiller.cfm');
            }
        });
    }           
);

$(
    function(){
        $('#wait').ajaxSend(function() {
            $(this).text('Please wait...');
        });
    }
);
$(
    function(){
        $('#wait').ajaxSuccess(function() {
            $(this).text('');
        });
    }
);

1 Ответ

2 голосов
/ 11 марта 2011

Вы должны добавить сообщение «Пожалуйста, подождите ...» в вашей функции click, а затем очистить сообщение после успешного завершения вашего load:

$('#toggleDetail').click(function(){
    if($.trim($('#inspectionDetail').text()).length)
    {
        $('#inspectionDetail').empty();
    }
    else
    {
        $('#wait').text('Please wait...');
        $('#inspectionDetail').load('srInspectionDetailFiller.cfm', function() {
                $('#wait').text('');
        });
    }
});

Редактировать: Хотя ajaxSend технически должно работать здесь, я не рекомендую это.С ajaxSend, "Все обработчики ajaxSend вызываются независимо от того, какой запрос Ajax должен быть отправлен" .Мне кажется излишним перехватывать все запросы Ajax на странице, которую вы действительно пытаетесь обработать одним кликом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...