((пожалуйста, обновите при необходимости, этот ответ вики))
Подвопрос: когда только текст, что быстрее, .text()
или .html()
?
Ответ: .html()
быстрее! См. здесь «набор для проверки поведения» по всем вопросам .
Итак, в заключение, , если у вас есть «только текст», используйте метод html()
.
Примечание: Не имеет смысла? Помните, что функция .html()
является только оболочкой для .innerHTML
, но в функции .text()
jQuery добавляет «фильтр сущностей» , и этот фильтр, естественно, потребляет время.
Хорошо, , если вы действительно хотите производительность ... Используйте чистый Javascript для доступа к прямой замене текста свойством nodeValue
.
Контрольные выводы:
- jQuery
.html()
примерно в 2 раза быстрее .text()
.
- pure JS '
.innerHTML
в 3 раза быстрее .html()
.
- pure JS '
.nodeValue
в ~ 50 раз быстрее, чем .html()
, ~ в 100 раз, чем .text()
, и в ~ 20 раз, чем .innerHTML
.
PS: .textContent
свойство было введено с DOM-Level-3, .nodeValue
- это DOM-Level-2 и быстрее (!).
См. этот полный тест :
// Using jQuery:
simplecron.restart(); for (var i=1; i<3000; i++)
$("#work").html('BENCHMARK WORK');
var ht = simplecron.duration();
simplecron.restart(); for (var i=1; i<3000; i++)
$("#work").text('BENCHMARK WORK');
alert("JQuery (3000x): \nhtml="+ht+"\ntext="+simplecron.duration());
// Using pure JavaScript only:
simplecron.restart(); for (var i=1; i<3000; i++)
document.getElementById('work').innerHTML = 'BENCHMARK WORK';
ht = simplecron.duration();
simplecron.restart(); for (var i=1; i<3000; i++)
document.getElementById('work').nodeValue = 'BENCHMARK WORK';
alert("Pure JS (3000x):\ninnerHTML="+ht+"\nnodeValue="+simplecron.duration());