目前我有一个 Ajax 调用,它获取填充到下拉列表中的通知。在将这些通知附加到下拉 div 中后,我想为下拉设置动画以打开所有元素的总高度。
目前这个函数在点击时被调用:
function showNotificationDropDown() {
if ($('#notification-dropdown-box').height() == 0) {
// removing old content
$("#notifi-box").remove();
// this is to show the loading spinner
$('#notification-dropdown-box').animate({ height: "120px" }, 100);
//shows loading spinner while call is being made
var spinner = $("<div class='spinner-sm'> </div>");
$('#notification-dropdown-box').html(spinner);
$.ajax({
type: "POST",
url: "/GetNotifications",
traditional: true
}).fail(function () {
alert('AJAX failed');
}).complete(function () {
spinner.remove();
}).done(function (html) {
//after the html data is obtained it is appended into the notification
//after it is appended the notification must drop down to the hieght of this html data
$('#notification-dropdown-box').append(html).done(expandNotificationDropDown());
return false;
});
return false;
}
return false;
};
现在扩展通知的功能有问题:
function expandNotificationDropDown() {
$('#notification-dropdown-box').children().each(function () {
var totalHeight = totalHeight + $(this).outerHeight(true);
alert(totalHeight);
if ($(this).is(':last-child')) {
$('#notification-dropdown-box').animate({ height: totalHeight }, 100);
}
});
}
我使用警报来测试每次通过的高度。我的问题是我从警报中得到的只是“NaN”。一旦最后一个通知片段被添加到高度,就没有动画完成,因为没有获得高度。
这是什么原因?主#notification-dropdown-box 中的所有孩子都没有书面高度,但我的研究告诉我,outerHeight 仍然应该获得它。