Javascript AJAX请求后,jQuery.hide()不例外

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(

我正在使用AJAX请求填充一个无序列表。填充后,我希望它立即隐藏起来,以便在需要时显示它。我尽可能地删去了代码,以明确这一点。AJAX代码将为我构建一个li元素,class=DropDownElement。一旦请求完成,我希望它们隐藏起来,但是现在,它没有按预期工作。 我猜,这是因为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();

};
函数填充下拉列表(){
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成功函数中。请记住,您正在处理一个异步任务;在成功功能下(最后)。如果你想让我修改你的代码来工作,一定要让我知道。