我正在使用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()
函数发送请求。调用该函数后,您将隐藏下拉列表元素。
在收到响应并调用success
函数之前,这些元素不存在。
将hide()
调用移至success
函数内。