2012-02-24 4 views
0

У меня есть этот скрипт:Ajax прелоадер работает только один раз

$(function() { 
$(this).ajaxStart(function() { 
$("#loading").show(); }); 
$(this).ajaxStop(function() { 
$("#loading").hide(); }); 
}); 

$(document).ready(function() { 
$('.button').click(function() { 
$("#contentDiv").load("content.php"); 
}); 

$('.button2').click(function() { 
$("#contentDiv").load("content2.php"); 
}); 
}); 

И этот HTML:

<div id="contentDiv"> 
<div id="loading"></div> 

</div> 

Я хочу, чтобы показать загрузку .gif перед каждой новой нагрузкой, но теперь он работает только в первый раз загружена вся страница. Поэтому, когда я нажимаю кнопку «первый раз», «загрузка» показывает, загружается «контент» и «загружается». Когда я, чем нажимаю кнопку «2», загружается «content2», но «загрузка» не отображается. Я пытаюсь вынуть «загрузку» div из «contentDiv», но «загрузка» никогда не скрывается.

ответ

0

Я сделал это работает так:

$(document).ajaxStart(function() { 
$('.loading').show(); 
$('#contentDiv').hide(); 
}).ajaxStop(function() { 
$('.loading').hide(); 
$('#contentDiv').show(); 
}); 

HTML:

<div id="contentDiv"></div> 
<div class="loading"></div> 

Я должен сделали класс нагрузки сНа, потому что ID не работает.

1

написать

<div id="loading" style="display:none"></div> 

над

<div id="contentDiv"> 
+0

I судимое это раньше ... результат в том, что нагрузка никогда не показывает. – user1182960

1

Вы заменяющее содержание #contentDiv, который содержит #loading DIV, поэтому он больше не может существовать после вызова .load() если сОн ISN» t также присутствует в content.php или content2.php. Может показаться, что ваш код работает полностью в первый раз, но вместо того, чтобы просто скрывать #loading, вы фактически удаляете его полностью.

Если это не проблема, возможно, что вызовы AJAX завершатся достаточно быстро, чтобы этот элемент был показан, а затем снова скрыт, достаточно быстро, чтобы вы не могли его увидеть.

+0

Я думаю об этом так, и это правда, потому что я изменяю 3 divs, используя функцию fade, и когда отображается перед открытым div, на секунду отображается старый контент, а затем новый контент, поэтому загрузки больше нет. Но он не работает, когда я реализую его в content.php, когда я загружаю загрузку вне div .... Так что, может быть, есть другой код, который будет работать для меня .... – user1182960

0

ID предназначен для создания уникального экземпляра на вашей странице. С другой стороны, Класс можно повторно использовать несколько раз. Так на самом деле одна следующее изменение должно работать:

<div class="loading"></div>

Смежные вопросы