我正在使用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函数内。

10-07 19:34
查看更多