Mam kilka DIV z treścią, które mają atrybut wagi danych, który jest regularnie aktualizowany za pośrednictwem AJAX.Ponowne rozmieszczanie/zapisywanie DIV bez ponownego wstawiania do DOM
Sortuję je w pętli, w której sprawdzam nowe wartości pochodzące z żądania ajax.
Ponieważ waga danych może być aktualizowana w dowolnej chwili do dowolnej wartości, zamówienie może się całkowicie zmienić z aktualizacji na aktualizację.
Moja logika sortowania wydaje się błędna (co najmniej;)), ponieważ porównuje tylko każdy element z następnym poprzez .next()
, więc musisz kliknąć "Sortuj według danych" waga "max. 4 razy dla 4 elementów, dopóki nie zostaną posortowane (patrz skrzypce poniżej)
Ważne jest, aby wiedzieć, że DIV, które mają być sortowane, zawierają źródła zewnętrzne, takie jak obrazy, wideo itp., Więc ważne jest, aby były przenoszone i nie były ponownie tworzone, ponieważ myślę, że po ponownym wstawieniu do DOM, zawarte ressources są ponownie ładowane, co jest niedopuszczalne dla mojego przypadku użycia.
Jak trudno descripte i może zrozumieć, tutaj jest moje skrzypce:
Aktualizacja
Choć główny problem jest rozwiązany, nadal istnieje problem, że gdy F. E. Youtube-Video są dołączone, są ponownie ładowane za każdym razem, gdy DIV są ponownie zamieniane, nawet jeśli wideo nie zmienia miejsca w DOM. Że a) wygląda dziwnie i b) przerywa wideo-grę. Czytając więcej na ten temat, przenoszenie elementów iframe w DOM zawsze sprawia, że przeładowują swoje treści - jak głupio to jest?
Fiddle jest aktualizowany o stałą masę danych 1 dla wideo YT, dzięki czemu zawsze pozostaje na wierzchu.
pomysły mile widziane !!
Na koniec, dlaczego nie zrobisz '$ wrapper.append ($ articles)'? –
@AlessandroVendruscolo - Ponieważ nie jestem mądry. (Zobacz także pierwsze zdanie mojej odpowiedzi.) Ale tak, to powinno zadziałać. – nnnnnn
dziękuję! To wygląda dobrze. Jeśli użyję sugestii @AlessandroVendruscolo, czy nie zaszkodzi mi to, że trzeba je przenieść, a nie ponownie włożyć? –