miałem odwrotny problem, jak opisano: najpierw obciążenie działało poprawnie w systemie Mac OS X Safari, ale zmieniając siatkę z wszystkich nowych elementów spowodował je wszystkie na stosie w lewym górnym rogu. Co więcej, oczekiwanie na gotowe zdarzenie i ustawienie szerokości CSS & szerokości na naszych elementach nie naprawiło tego.
Na naszej stronie mamy kategorie danych, które są wyświetlane w siatce murarskiej i tylko jedna kategoria pokazuje się na raz. Użytkownik może zmienić kategorię w dowolnym momencie i wywołać żądanie AJAX, aby załadować nowe dane. W najnowszym Safari (9.1, 10) oraz przeglądarek takich jak Chrome, moglibyśmy po prostu to zrobić przy zmianie kategorii, aby zamienić we wszystkich nowych elementów:
// domData is HTML string from the server
// IMJS is our global variable that we use for globals and lookups
$("#divTemplateCategoryName").after(domData); // insert new HTML
var elementsToAdd = $(".grid-item-template-info"); //select the elements
IMJS.MasonryGrid.masonry('addItems', elementsToAdd); // tell masonry to add them
IMJS.MasonryGrid.masonry('layout'); // tell masonry to layout again
Jednak w niektórych wersjach Safari, które nie pracują, a musieliśmy to zrobić w zamian:
// domData is HTML string from the server
// IMJS is our global variable that we use for globals and lookups
IMJS.MasonryGrid.masonry('destroy'); // destroy the grid
$("#divTemplateCategoryName").after(domData); // insert new HTML
InitMasonry(); // re-do our entire masonry init
Bo nie mają czasu, aby wyśledzić każdą wersję przeglądarki, która może mieć wpływ tego błędu, przeszedłem do tej ostatniej metody dla wszystkich przeglądarek.
Dodaj zrzut ekranu - Twój link jest uszkodzony. – opyate