0

我有一个 jQuery XML 文件解析器,它是从某个地方获得的,它读取 XML 文件并将内容解析为 HTML 页面中的列表。

$(document).ready(function(){
    $("#dvContent").append("<ol></ol>");
    $.ajax({
            type: "GET",
            url: "BookList.xml",
            dataType: "xml",
            success: function(xml){
                $(xml).find('Book').each(function(){
                    var sTitle = $(this).find('Title').text();
                    var sPublisher = $(this).find('Publisher').text();
                    $("<li></li>").html(sTitle + ", " + sPublisher).appendTo("#dvContent ol");
                });
        },
        error: function() {
                alert("An error occurred while processing XML file.");
        }
    });
});

我的 XML 文件有大约 24000 行,每行 6500 是标签。Chrome 可以在大约 1 秒或更短的时间内遍历所有 6400,但 IE8 似乎限制在 1228 行。

这是 IE8 将这个循环解释为无限并停止它的进程还是其他什么?

提前谢谢大家。

4

1 回答 1

1

一遍又一遍地附加到 DOM 对性能不利。你应该追加一次。每次查找要附加的位置也很昂贵。

$("<li></li>").html(sTitle + ", " + sPublisher).appendTo("#dvContent ol");

每次查找 $(this) 也很昂贵,因为它会创建一个新的 jQuery 对象。

var sTitle = $(this).find('Title').text();
var sPublisher = $(this).find('Publisher').text();

所以像这样的东西应该表现得更好一点

var outHTML = "";
$(xml).find('Book').each(function(){
    var book = $(this),
        sTitle = book.find('Title').text(),
        sPublisher = book.find('Publisher').text();
    outHTML += "<li>" + sTitle + ", " + sPublisher + "</li>");
});
$("#dvContent ol").append(outHTML);

最后 6400 个项目要添加到页面中,最好以另一种格式显示数据。

于 2012-08-20T03:52:02.760 回答