1

我知道空方法会删除 DOM 元素中的所有子元素。

但是,在此示例中,为什么删除空方法会导致重复条目:

在此处输入图像描述

并将其放入正常页面的结果中:

在此处输入图像描述

var renderNotesList = function() 
{
    var dummyNotesCount = 10, note, i;

    var view = $(notesListSelector);
    view.empty();

    var ul = $("<ul id =\"notes-list\" data-role=\"listview\"></ul>").appendTo(view);

    for (i=0; i<dummyNotesCount; i++) 
    {
        $("<li>"+ "<a href=\"index.html#note-editor-page?noteId=" + i + "\">" + "<div>Note title " + i + "</div>" + "<div class=\"list-item-narrative\">Note Narrative " + i + "</div>" + "</a>" + "</li>").appendTo(ul);
    }
    ul.listview();
};
4

2 回答 2

2

我不知道为什么empty()不起作用,但我发现了这个

...所以在排序之前,每个人都应该使用: el.children().remove(); 而不是el.empty();

jQuery.empty() 不会破坏 UI 小部件,而 jQuery.remove() 会(使用 UI 1.8.4)

于 2013-07-04T00:55:46.623 回答
0

在没有看到您的 JavaScript 是如何在您的页面中使用的情况下,我怀疑您必须调用该renderNotesList()函数两次,从而生成无序列表。

当您使用该.empty()方法时,您将删除第一个ul列表,因此您只会看到一个实例。如果没有调用.empty(),您将保留两者。

但是,如果不查看更多内容,我无法说出这在您的网页中发生的位置或方式,但至少您现在对要查找的内容有所了解。

演示小提琴

我使用你的 JavaScript 构建了一个演示,但我有点猜测你是如何使用它的。

小提琴:http: //jsfiddle.net/audetwebdesign/UVymE/

脚注

我突然想到,该函数ul.listview()实际上可能正在将 DOM 的第二个副本附加ul到 DOM 中。您需要检查代码或将其发布以供进一步审查。

于 2013-07-04T01:37:52.077 回答