Как работает метод JQuery empty()?

Я знаю, что пустой метод удаляет всех дочерних элементов в элементе DOM.

В этом примере, однако, почему удаление пустого метода приводит к дублированию записей:

и поместить его в результаты на обычной странице:

var renderNotesList = function()
{ var dummyNotesCount = 10, note, i; var view = $(notesListSelector); view.empty(); var ul = $("").appendTo(view); for (i=0; i<dummynotescount; i++)="" {="" $("<li="">"+ "<a href="\" index.html#note-editor-page?noteid="" +="" i="" "\"="" target="_blank">" + "<div>Note title " + i + "</div>" + "<div list-item-narrative\""="">Note Narrative " + i + "</div>" + "</a>" + "").appendTo(ul); } ul.listview();
};
</dummynotescount;>
2 ответа

Я не знаю, почему empty() не работает, но я нашел это

... так что пока это не отсортировано, все должны просто использовать: <span>el.children(). remove();</span> вместо <span>el.empty();</span>

(jQuery.empty() не уничтожает виджеты пользовательского интерфейса, тогда как jQuery.remove() делает (используя пользовательский интерфейс 1.8.4))


Не видя, как ваш JavaScript используется на вашей странице, я подозреваю, что вы должны дважды renderNotesList() функцию renderNotesList() и, таким образом, генерировать неупорядоченные списки.

Когда вы используете метод .empty(), вы .empty() первый список ul, поэтому вы видите только один экземпляр. Без вызова функции .empty() вы сохраняете оба.

Однако я не могу сказать, где и как это происходит на вашей веб-странице, не видя больше, но по крайней мере у вас теперь есть представление о том, что искать.

Демо-скрипт

Я построил демо, используя ваш JavaScript, но я как бы догадывался о том, как вы его используете.

Сценарий: http://jsfiddle.net/audetwebdesign/UVymE/

сноска

Мне пришло в голову, что функция ul.listview() может фактически добавить вторую копию ul в DOM. Вам необходимо проверить код или отправить его для дальнейшего рассмотрения.

licensed under cc by-sa 3.0 with attribution.