Wszystkie te czynności są wykonywane, ale jaki jest najbardziej wydajny sposób?Jaki jest najbardziej efektywny sposób na opróżnienie elementu za pomocą jQuery
$(selector).html('');
$(selector).text('');
$(selector).children().remove();
Wszystkie te czynności są wykonywane, ale jaki jest najbardziej wydajny sposób?Jaki jest najbardziej efektywny sposób na opróżnienie elementu za pomocą jQuery
$(selector).html('');
$(selector).text('');
$(selector).children().remove();
Zobacz http://api.jquery.com/empty
$(selector).empty();
Jest to zdecydowanie najbardziej wyraźny sposób, a prawie na pewno najbardziej efektywne.
Ponieważ jest to wewnętrzny jQuery, prawdopodobnie jest bardziej wydajny niż .children().remove()
, a na pewno nie mniej wydajny.
Musiałbym pomyśleć, że .html('')
i .text('')
są mniej wydajne, ponieważ wywołują one parsery html, a nie tylko zajmują się węzłami domowymi, jak inne metody. A nawet gdyby okazały się bardziej wydajne, wszelkie zyski w wydajności byłyby łatwo przeskalowane przez zyski w klarowności używania empty(), chyba że naprawdę potrzebujesz zoptymalizować tę sekcję z konkretnego powodu (w takim przypadku po prostu porównałbym wszystkie opcje).
Ponadto the answer z @Ben Lee, jeśli chcesz najszybszy sposób, jeśli wyświetlając nową treść, może warto rozważyć .detach()
:
var $elem = $(selector);
var $detached = $elem.children().detach();
$elem.html('new content');
$detached.remove();
ten odracza czyszczenie danych, aż po wyświetleniu nowa treść. Nie testowałem wydajności, ale jestem pewien, że zobaczysz zyski podczas usuwania dużej ilości treści.
Dzięki za to. Jestem ajax-loading nowych treści, więc i tak jest opóźnienie, ale jestem pewien, że wykorzystam to w przyszłości. – Jake
* "Musiałbym myśleć, że .html ('') i .text ('') są wolniejsze ..." * Nie trzeba o tym myśleć, zarówno 'html ('')' jak i 'text ('') '* call *' empty() 'w ich implementacji, a zatem są mniej wydajne z definicji. –
Ha, nie wiem, jak brakowało mi pustego() – Jake
@Jake, dzieje się z najlepszymi z nas =). –