Mam drzewo kategorii które ma następującą postać:

NAGŁÓWEK
--- pozycja 1
--- pozycja 2
--- pozycja 3

NAGŁÓWEK 2
--- pozycja 4
--- pozycja 5
itd.

Mam checkbox który po odznaczeniu ukrywa nagłówki, a po zaznaczeniu pokazuje je. Nie mogę użyć do tego funkcji hide(), show() itp gdyż w dalszym etapie muszę pozycje posortować alfabetycznie po usunięciu nagłówków. W tym celu napisałem sobie funkcje(jeszcze nie sortuje).

  1. copy_tree = $('.category-area ul').clone();
  2. $('#categories_ch').live('click', function() {
  3.  
  4. if ($(this).attr('checked')) {
  5. $(this).closest('.category-area').remove(); <!----- W TYM WERSIE JEST PROBLEM --->
  6. $(copy_tree).prependTo('.category-area');
  7. } else {
  8. copy_tree = $('.category-area ul').clone();
  9. $('.category-area ul li ul').each(function() {
  10. $(this).clone().prependTo('.category-area ul:eq(0)');
  11. $(this).closest('li').remove();
  12. });
  13. }
  14. });


kod nie usuwa dynamicznie dodanych elementów tzn kiedy zaznaczę checkbox do pokazywania nagłówków to skrypt powinien usunąć całe drzewo kategorii a następnie wczytać kopię drzewa zanim zostały nagłówki usunięte. Usuwa drzewo kategorii prócz drzewa wygenerowanego wcześniej po odznaczeniu checkboxa. Dlatego efekt zaznaczenia checkboxa w celu pokazania nagłówków jest taki: pełna wersja drzewa kategorii + wersja drzewa kategorii bez nagłówków.

EDIT:
============
problem rozwiązany. Wystarczyło podmienić wadliwy wers na:
  1. $('.category-area ul li').each(function() {
  2. $(this).fadeOut('normal', function() {
  3. $(this).remove();
  4. });
  5. });