动画完成后,我按如下所示进行ajax调用,但没有任何反应。 Ajax调用根本没有发生。什么都没有发送到处理ajax请求的php文件。我不明白错误或错过了什么。 提前致谢!!!
$('.open, .closed, .appoint').each(function (index) {
var $control = $('#' + (firstDay + index));
$control.animate({
top: pos[firstDayNext + index].top,
left: pos[firstDayNext + index].left + (($control.html() < 10) ? 5.7 : 0),
}, (400 + (25 * index)));
}).promise().always(function(){
$.ajax({
type:"GET",
url:"ajax/showingAppointmentForMonth.php",
dataType:'JSON',
data:"year=" + currentYear + "&month=" + currentMonthInteger + "&id=" + "<?php echo $id;?>",
success:function(data){
//do something with the data
}
});
});
答案 0 :(得分:1)
因为动画不会在迭代的元素集中发生,所以不会调用promise。
而是使用.map()并返回$control
元素并在该组元素上调用promise
var firstDay = '01-Aug-'
$('.open, .closed, .appoint').map(function(index) {
var $control = $('#' + (firstDay + index));
$control.animate({
height: 'hide' //to demo
}, (4000 + (25 * index)));
return $control.get();
}).promise().always(function() {
alert('ajax')
//ajax here
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<span class="open">open</span>
<span class="closed">closed</span>
<span class="appoint">appoint</span>
<br />
<div id="01-Aug-0">01-Aug-1</div>
<div id="01-Aug-1">01-Aug-2</div>
<div id="01-Aug-2">01-Aug-3</div>