jQuery: самая быстрая вставка DOM?

Проблема, которая приходит на ум, состоит в том, что у вас есть отношения без ассоциирования FK:

public class CreamModel
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public decimal Price { get; set; }
    public string ImageName { get; set; }

    [ForeignKey("CreamTypeModel")] 
    public int? CreamTypeModel_id { get; set; }
    public virtual CreamTypeModel CreamTypeModel { get; set; }
}

Это связывает FK со связанным эталонным свойством.

21
задан Julius Eckert 22 September 2008 в 23:08
поделиться

5 ответов

innerHTML удивительно быстр, и во многих случаях Вы получите лучшие результаты, просто устанавливающие это (я просто использовал бы, добавляют).

Однако, если очень уже существует в "mydiv" тогда, Вы вынуждаете браузер проанализировать и представить все то содержание снова (все, что было там прежде плюс все Ваше новое содержание). можно избежать этого путем добавления фрагмента документа на "mydiv" вместо этого:

var frag = document.createDocumentFragment();
frag.innerHTML = html;
$("#mydiv").append(frag);

Таким образом, только Ваше новое содержание анализируется (неизбежное), и существующее содержание не делает.

РЕДАКТИРОВАНИЕ: Мое плохое... Я обнаружил, что innerHTML не хорошо поддерживается на фрагментах документа. Можно использовать ту же технику с любым типом узла. Для Вашего примера Вы могли создать корневой узел таблицы и вставить innerHTML в это:

var frag = document.createElement('table');
frag.innerHTML = tableInnerHtml;
$("#mydiv").append(frag);
22
ответ дан 29 November 2019 в 06:27
поделиться

Чего Вы пытаетесь избежать? "Плохое чувство" невероятно неопределенно. Если Вы услышали, что "DOM является медленным" и решенный для "предотвращения DOM", тогда это невозможно. Каждый метод введения кода в страницу, включая innerHTML, приведет к создаваемым Объектам DOM. DOM является представлением документа в памяти Вашего браузера. Вы хотите Объекты DOM быть созданными.

причина, почему люди говорят "DOM, является медленной", то, потому что создание элементов с document.createElement(), который является официальным интерфейсом DOM для создания элементов, медленнее, чем использование нестандартного innerHTML свойства в некоторых браузерах. Это не означает, что создание Объектов DOM плохо, это необходимо для создания Объектов DOM, иначе код не сделал бы ничего вообще.

9
ответ дан 29 November 2019 в 06:27
поделиться

Ответ об использовании фрагмента DOM на правильном пути. Если у Вас будет набор объектов HTML, что Вы - постоянная вставка в DOM тогда, то Вы будете видеть, что некоторые улучшения скорости используют фрагмент. Это сообщение John Resig объясняет его вполне прилично: http://ejohn.org/blog/dom-documentfragments/

2
ответ дан 29 November 2019 в 06:27
поделиться

Для начала, запишите сценарий, что времена, сколько времени он берет, чтобы сделать это 100 или 1,000 раз с каждым методом.

Для проверки повторения так или иначе не оптимизированы далеко - я не эксперт по механизмам JavaScript - варьируются HTML, который Вы вставляете каждый раз, говорите путем помещения '0001' тогда '0002' тогда '0003' в определенной ячейке таблицы.

1
ответ дан 29 November 2019 в 06:27
поделиться

Вы упоминаете, что интересовались альтернативами. При рассмотрении списка DOM-связанные плагины jQuery , Вы найдете несколько, которые выделены программно генерации деревьев DOM. Посмотрите, например SuperFlyDom или Создатель Элементов DOM ; но существуют другие.

-1
ответ дан 29 November 2019 в 06:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: