jQuery: можно ли дать метод empty () длительность?

Можно ли в jQuery дать метод empty () такой продолжительности, чтобы объект постепенно терял свою производительность в течение определенного периода времени (например, 500 миллисекунд)?

Вот текущий код:

$('#object_to_be_emptied').empty();
12 голосов | спросил Henry Yun 7 J0000006Europe/Moscow 2011, 22:09:28

3 ответа


0

Нет. Исчезните содержимое, затем очистите его, когда исчезновение завершено.

$('#object_to_be_emptied').children().fadeOut(500, function() {
    $('#object_to_be_emptied').empty();
});

Этот код, к сожалению, вызывает empty столько раз, сколько есть элементов в #object_to_be_emptied. Если вы используете jQuery> 1.6, вы можете обойти это с помощью $.Deferred для анимации:

$('#object_to_be_emptied').children().fadeOut(500).promise().then(function() {
    $('#object_to_be_emptied').empty();
});
ответил lonesomeday 7 J0000006Europe/Moscow 2011, 22:13:23
0

Два других ответа предлагают использовать $('#object_to_be_emptied').children().fadeOut(), но на самом деле плохая идея использовать .children(), потому что это приведет к тому, что анимация будет применена к каждому дочерних элементов в вашем содержащем элементе (производительность убийства), и, следовательно, выполнение анимации завершено один раз для каждого элемента внутри object_to_be_emptied. С более чем несколькими элементами это превратится в настоящую проблему.

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

$('#object_to_be_emptied').fadeOut(500, function() {
    $(this).empty();
});

Также обратите внимание, что я использовал this в функции обратного вызова - jQuery устанавливает this быть элементом DOM, который является целью функции обратного вызова; в этом случае object_to_be_emptied. Использование this позволяет сэкономить время на вводе и упростить внесение изменений в код.

ответил josh3736 7 J0000006Europe/Moscow 2011, 22:26:16
0

вы, вероятно, ищете что-то вроде:

$('#object_to_be_emptied').children().fadeOut(500,function(){
  $('#object_to_be_emptied').empty()
});
ответил Trey 7 J0000006Europe/Moscow 2011, 22:13:46

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132