jQuery css selector quirk -


पृष्ठभूमि:

मेरे पास एक सीएमएस उपकरण है जो उपयोगकर्ताओं को बनाने की अनुमति देता है सामग्री क्षेत्र के अंदर एक तालिका यदि सीमा के लिए विकल्प का उपयोग किया जाता है, तो उपकरण तालिका पर सीमा विशेषता सेट करता है, और एक शैली का उपयोग नहीं करता है मेरा रीसेट स्टाइलशीट सभी तालिकाओं को कोई बॉर्डर में चूक नहीं करता, और यह तालिका सीमा विशेषता को ओवरराइड करता है (यानी, कोई सीमा प्रदर्शित नहीं होती है)।

एक त्वरित हैक के रूप में, गैर-बॉर्डर विशेषता और सीमा विशेषता को इनलाइन शैली में कनवर्ट करते हैं।

मेरा प्रश्न:

जब मैं काम करने के लिए कोड प्राप्त करने में सक्षम था, यह मूल रूप से इच्छित समाधान नहीं है।

यह वर्तमान में काम कर रहा है:

  $ ("table [border! = '0']")। सीएसएस ('सीमा ', फ़ंक्शन () {वापसी $ (यह) .attr (' सीमा ') + "पीएक्स ठोस";});   

मेरा मूल समाधान सीएसएस विधि में फ़ंक्शन की आवश्यकता नहीं था -

  $ ("table [border! = '0']") सीएसएस ('सीमा', $ (यह) .attr ('सीमा') + "पीएक्स ठोस");   

मुझे एहसास है कि मैं यह प्रश्न लिखता हूं कि $ (यह) चयन में प्रत्येक आइटम का उल्लेख नहीं करता, क्योंकि यह फ़ंक्शन के अंदर होता है, इस प्रकार मेरी समस्या। < P>

क्या फ़ंक्शन के बिना इसे पूरा करने का कोई तरीका है?

नहीं , फ़ंक्शन का उपयोग केवल एक (और सबसे अच्छा) तरीका है क्योंकि अन्यथा आप प्रत्येक आइटम को अलग से एक्सेस नहीं कर सकते।

ध्यान दें कि आपके कोड में एक बग है: $ (this) .attr ['border'] होना चाहिए $ (this) .attr ('border') - अन्यथा आप हमेशा undefinedpx ठोस प्राप्त करते हैं, जो बहुत अधिक समझ में नहीं आता है।

हालांकि, जब तक आपके पास border के लिए विभिन्न मानों का एक टन नहीं है तब तक आप सीएसएस का उपयोग कर सकते हैं:

 < कोड> तालिका [सीमा = 1] {सीमा: 1 पीएक्स ठोस; } तालिका [सीमा = 2] {सीमा: 2px ठोस; }   

जाहिर है यह कई अलग-अलग मूल्यों के साथ गन्दा होगा लेकिन संभावनाएं अच्छी हैं कि आपके पास कई अलग-अलग सीमा चौड़ाई नहीं है।

Comments