Функция сортировки jQuery замораживает (предыдущий) текст show () - PullRequest
0 голосов
/ 07 октября 2009

Я сортирую список видов, но иногда этот список велик, и его сортировка занимает несколько секунд. Поэтому я попытался добавить небольшое уведомление, чтобы наши пользователи знали, что что-то работает (и им следует подождать). Пожалуйста, просто проверьте эту страницу: http://ibc.lynxeds.com/family/babblers-timaliidae И нажмите «Сортировка и фильтрация [+]». Затем нажмите на любую ссылку «Сортировать по».

В Opera вы сначала получите сообщение, затем он начнет сортировку видов, затем сообщение изменится на другой текст, и все. В FF или IE первое сообщение не отображается, и вы просто знаете, что процессор выполняет какую-то работу, а затем «Готово!» сообщение отображается и исчезает.

Итак, в худшем случае (медленный процессор, большой список) вы можете подождать 20 секунд, а затем вы получите это Готово! сообщение (было бы намного лучше сначала показать «пожалуйста, подождите» и просто исчезнуть, когда закончите ...)

Код JQuery, который вызывает функцию сортировки:

$(".s_alf_eng").toggle(
 function() {
   $(".warning").text("Sorting... please wait").show(); //warning is an empty div
   $('.media-status-specie li').sort(sortAscending1).appendTo('.media-status-specie');
   $(".warning").text("Sorting... Done!").fadeOut(700);
      },
 function() {
   $(".warning").text("Sorting... please wait").show();
   $('.media-status-specie li').sort(sortDescending1).appendTo('.media-status-specie');
   $(".warning").text("Sorting... Done!").fadeOut(700);
      });

Отлично работает в Опере. Я не понимаю, почему в других браузерах первое сообщение не отображается.

Что можно сделать, чтобы FF и IE отображали сообщение «Пожалуйста, подождите» перед началом сортировки?

Смежный вопрос - как ускорить сортировку (это может занять до 20 секунд для самой большой семьи, в моем core2duo ...).

Спасибо за любые предложения!

РЕДАКТИРОВАТЬ: функция сортировки находится здесь: stackoverflow.com/questions/1531176

Ответы [ 2 ]

1 голос
/ 07 октября 2009

Как тест, что произойдет, если вы измените:

$('.media-status-specie li').sort

до

$('.media-status-specie').find('li').sort....

или, еще лучше:

<ul id="media-status-specie" class="media-status-specie">

, а затем:

 $('#media-status-specie').find('li').sort.....

Так же, как к вашему сведению, я получаю в браузере предупреждающее сообщение о медленно работающем скрипте, позволяю запустить его и он заканчивается. Через несколько секунд я вижу предупреждающее сообщение, которое вы отправляете, кстати.

0 голосов
/ 07 октября 2009

Во-первых, что вы используете для сортировки, т.е. что находится в sort()?

Во-вторых, есть ли функция обратного вызова, которую можно использовать для установки "Готово!" сообщение после завершения сортировки?

В-третьих, сортировка может быть ускорена в зависимости от алгоритма сортировки, используемого в sort(). Если вы можете предоставить более подробную информацию, я смогу помочь в дальнейшем.

...