Спасибо за это. Я ajax-загружаю новый контент, так что там все равно есть задержка, но я уверен, что буду использовать это в будущем.

то делают, но какой самый эффективный способ?

$(selector).html('');
$(selector).text('');
$(selector).children().remove();

Ответы на вопрос(2)

К тому жеответ из@Ben Lee, если вы хотите самый быстрый способ отображения вашего нового контента, вы можете рассмотреть.detach():

var $elem = $(selector);
var $detached = $elem.children().detach();

$elem.html('new content');
$detached.remove();

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

 Jake12 янв. 2011 г., 01:29
Спасибо за это. Я ajax-загружаю новый контент, так что там все равно есть задержка, но я уверен, что буду использовать это в будущем.
Решение Вопроса

Видетьhttp://api.jquery.com/empty

$(selector).empty();

Это, безусловно, самый понятный способ, и почти наверняка самый эффективный.

Поскольку это jQuery-internal, он, вероятно, более эффективен, чем.children().remove()и, конечно, не менее эффективно.

Я должен был бы думать, что.html('') а также.text('') оба они менее эффективны, так как они вызывают html-парсеры, а не просто работают с dom-узлами, как другие методы. И даже если бы они оказались более эффективными, любой выигрыш в эффективности легко перевесил бы выигрыш в ясности использования empty (), если только вам действительно не нужно оптимизировать этот раздел по определенной причине (в этом случае я просто сравню все варианты).

 Jake11 янв. 2011 г., 23:44
Ха, не уверен, как я пропустил пустой ()
 Ben Lee11 янв. 2011 г., 23:45
@ Джейк, случается с лучшими из нас =).
 T.J. Crowder11 янв. 2011 г., 23:39
«Я должен думать, что .html ('') и .text ('') оба медленнее ...» Не нужно думать об этом, обаhtml('') а такжеtext('') вызов empty() в их реализации, и, следовательно, менее эффективны по определению.

Ваш ответ на вопрос