मुझे वर्णित विपरीत समस्या थी: पहला लोड मैक ओएस एक्स सफारी में ठीक काम करता था, लेकिन सभी नए आइटमों के साथ ग्रिड को बदलने से उन्हें सभी बाएं कोने में ढेर हो गया। इसके अलावा, तैयार घटनाओं की प्रतीक्षा कर रहे हैं और सीएसएस ऊंचाई & हमारे तत्वों की चौड़ाई को ठीक नहीं किया है।
हमारी साइट पर, हमारे पास डेटा की श्रेणियां हैं जो चिनाई ग्रिड में प्रदर्शित होती हैं, और एक समय में केवल एक श्रेणी में दिखाती हैं। कोई उपयोगकर्ता किसी भी समय श्रेणी स्विच कर सकता है और नए डेटा में लोड करने के लिए AJAX अनुरोध को ट्रिगर कर सकता है। नवीनतम सफारी (9.1, 10) और Chrome जैसे ब्राउज़र में, हम बस जब श्रेणी बदलने के सभी नए तत्वों में स्वैप करने के लिए ऐसा कर सकता है:
// 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
हालांकि, सफ़ारी के कुछ संस्करणों कि काम नहीं होता है, और लेकिन इसके बदले हम यह करने के लिए किया था:
// 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
क्योंकि मैं समय हर ब्राउज़र संस्करण है कि इस बग से प्रभावित हो सकता को ट्रैक करने की जरूरत नहीं है, मैं सभी ब्राउज़रों के लिए बाद विधि करने लगे।
स्रोत
2016-08-22 17:14:32
कृपया एक स्क्रीनशॉट जोड़ें - आपका लिंक टूटा हुआ है। – opyate