Javascript AJAX请求后,jQuery.hide()不例外
我正在使用AJAX请求填充一个无序列表。填充后,我希望它立即隐藏起来,以便在需要时显示它。我尽可能地删去了代码,以明确这一点。AJAX代码将为我构建一个li元素,class=DropDownElement。一旦请求完成,我希望它们隐藏起来,但是现在,它没有按预期工作。 我猜,这是因为jQuery无法检查是否出现了新的“.DropdownElements” 我正在使用以下代码:Javascript AJAX请求后,jQuery.hide()不例外,javascript,jquery,ajax,xml,html,Javascript,Jquery,Ajax,Xml,Html,我正在使用AJAX请求填充一个无序列表。填充后,我希望它立即隐藏起来,以便在需要时显示它。我尽可能地删去了代码,以明确这一点。AJAX代码将为我构建一个li元素,class=DropDownElement。一旦请求完成,我希望它们隐藏起来,但是现在,它没有按预期工作。 我猜,这是因为jQuery无法检查是否出现了新的“.DropdownElements” 我正在使用以下代码: function populateDropDown (){ var currentID = $(this).attr(
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();
};
函数填充下拉列表(){
var currentID=$(this.attr(“id”);
$('.DropDownElement').remove();
$.ajax({
url:'xml/wooddata.xml',
键入:“get”,
数据类型:“xml”,
成功:功能(数据){
$(数据)。查找('wood[id=“”+currentID+“]”)。每个(函数(){
var hasTraversal=$(this).find('images[rotation=“traversal”]”)。children().length>0;
if(hasTraversal){
$(this).find('images[rotation=“traversal”]image_description[lang=“”+activeLanguage+“]”)。每个(函数(){
var description=$(this.text();
$(“#TraversalSelector”).append(““+description+” ”);
});
};
});
}
});
$('.DropDownElement').hide();
};
ajax()函数发送请求。调用该函数后,将隐藏下拉元素
在收到响应并调用success
函数之前,这些元素不存在
将hide()
调用移动到success
函数中。放置$('.dropdownleent').hide()代码>内部但最后一个成功:函数(数据){}
success: function(data) {
....
$('.DropDownElement').hide();
}
错误的原因是javascript并行执行所有语句
因此,如果希望在成功函数
之后执行,则应在成功函数内调用.hide()
函数
还为error添加了一个函数:在ajax中调用,并在其中调用hide函数
您也可以尝试添加超时
setTimeout(function(){ $('.DropDownElement').hide();},1000);
.hide在ajax请求后工作 条件是的元素不应被$('.DropDownElement').remove()删除;或者(像这样) 删除后,任何元素都不会隐藏。
对于隐藏,元素应该在那里。您必须将元素隐藏在ajax成功函数中。请记住,您正在处理一个异步任务;在成功功能下(最后)。如果你想让我修改你的代码来工作,一定要让我知道。