जब आप border-collapse: collapse;
को एक तालिका में अपनी कोशिकाओं की सीमाओं को "मिश्रित" करने के लिए लागू करते हैं, तो यह जावास्क्रिप्ट में तालिका कक्षों की चौड़ाई निर्धारित करने में समस्याएं उत्पन्न करता है। उदाहरण के लिए, इस पृष्ठ को देखें:
http://game-point.net/misc/browserTests/scratchpads/jsTableWidth/
दो टेबल हैं, एक ढह गई सीमाओं के साथ एक और बिना। यदि आप बिना किसी सीमा के सीमा में एक पंक्ति पर क्लिक करते हैं, तो jQuery की आंतरिकविड्थ और बाहरी विड्थ फ़ंक्शन रिपोर्ट करता है कि मैं क्या देखने की अपेक्षा करूंगा (सामग्री चौड़ाई, और सामग्री क्रमशः सीमा चौड़ाई क्रमशः; कोई पैडिंग नहीं है)।तालिका कक्ष की जावास्क्रिप्ट चौड़ाई एक पिक्सेल बहुत छोटी क्यों है?
हालांकि, यदि आप ढह गई सीमाओं के साथ तालिका में एक पंक्ति पर क्लिक करते हैं, तो आपको ब्राउज़र-असंगत व्यवहार मिलता है, खासकर clientWidth
संपत्ति पर। फ़ायरफ़ॉक्स में, clientWidth
width()
जैसा ही है। आईई और क्रोम में, यह 1 पिक्सेल ऊंचा है, और ओपेरा में, यह width()
जैसा ही है, लेकिन ओपेरा का width()
बहुत छोटा है। वास्तव में, width()
फ़ायरफ़ॉक्स को छोड़कर मैंने परीक्षण किए गए सभी ब्राउज़रों में एक पिक्सेल बहुत छोटा है। तो यदि आप एक स्क्रीनशॉट लेते हैं और सामग्री वास्तव में 80px है, width()
79px है (jQuery इसे गणना किए गए सीएसएस मान से प्राप्त करता है)। ऐसा क्यों है?
मैं वास्तविक सामग्री की चौड़ाई प्राप्त करना चाहता हूं। मैं width()
का उपयोग नहीं कर सकता क्योंकि केवल फ़ायरफ़ॉक्स को ध्वस्त सीमाओं के साथ यह अधिकार मिलता है। मैं outerWidth()
का उपयोग नहीं कर सकता क्योंकि इसमें सीमाएं शामिल हैं (या शायद केवल एक सीमा, क्योंकि यह वास्तविक सामग्री चौड़ाई से केवल 1px बड़ा है)। मैं clientWidth
का उपयोग नहीं कर सकता क्योंकि इसका मूल्य ब्राउज़र के बीच असंगत है। मुझे क्या करना चाहिए और width()
1px क्यों अधिकांश ब्राउज़रों में बहुत कम है जब सीमाएं गिर गई हैं?
एक div के साथ सेल की सामग्री को लपेटने और इसकी चौड़ाई प्राप्त करने के लिए '.wrapInner()' विधि का उपयोग करें। http://api.jquery.com/wrapInner/ – charlietfl
लेकिन इसका मतलब है कि सामग्री को लपेटने के लिए आपको जगह पर डोम तत्व डालने की ज़रूरत है ... बिल्कुल आदर्श नहीं? – Jez
टेबल सिरदर्द हो सकता है, आपको क्यों लगता है कि अब वे लेआउट के लिए उपयोग नहीं किए जाते हैं? लपेटने की सामग्री भी उन पंक्तियों को एनिमेट करने के लिए समाधान है। इसके बिना एक पंक्ति एनिमेट करने का प्रयास करें ... परिणाम भयानक हैं – charlietfl