【发布时间】:2015-07-22 19:46:38
【问题描述】:
我正在使用 AJAX 请求填充无序列表。填充后,我希望它立即隐藏,以便在需要时显示它。我尽可能地剥离了代码,以明确这一点。 AJAX 代码将为我构建一个 class=DropDownElement 的 li 元素。一旦请求完成,我希望它们隐藏起来,但现在,它没有按预期工作。 我猜,那是因为 jQuery 无法检查是否出现了新的 '.DropdownElements'。
我正在使用以下代码:
function populateDropDown (){
var currentID = $(this).attr("id");
$('.DropDownElement').remove();
$.ajax({
url: 'xml/wooddata.xml',
type: 'get',
dataType: 'xml',
success: function(data) {
$(data).find('wood[id="' + currentID + '"]').each(function(){
var hasTraversal = $(this).find('images[rotation="traversal"]').children().length > 0;
if (hasTraversal) {
$(this).find('images[rotation="traversal"] image_description[lang="' + activeLanguage + '"]').each(function(){
var description = $(this).text();
$('#TraversalSelector').append('<li value="' + currentID + '" class="DropDownElement" id="' + currentID + '" data-rotation="traversal">' + description + '</li>');
});
};
});
}
});
$('.DropDownElement').hide();
};
【问题讨论】:
-
您必须在 ajax 成功函数中隐藏您的元素。请记住,您正在处理异步任务。
-
放 $('.DropDownElement').hide();在成功功能下(最后)。如果您希望我修改您的代码以使其正常工作,请告诉我。
标签: javascript jquery ajax xml html