2011-10-10 12 views
6

क्या संबंधित नाम प्राप्त करने के लिए कोई प्रावधान मौजूद है?सीएसएस स्टाइल प्रॉपर्टी नाम - नियमित संस्करण से जेएस प्रॉपर्टी कैमेलकेस संस्करण में जा रहे हैं और इसके विपरीत

एक समारोह मैं लिख रहा हूँ दोनों element.style[propnameCamelCase] के माध्यम से शैली सेट और document.defaultView.getComputedStyle(element,'').getPropertyValue(propname-regular) के माध्यम से मौजूदा गाया मान प्राप्त करने के लिए है, और मैं शायद ही इस समारोह के लिए दो अलग-अलग लेकिन शब्दार्थतः पहचान तर्क पारित करने के लिए होने का औचित्य साबित कर सकते हैं।

मुझे पता है कि उनमें से ज्यादातर के लिए यह कैमेलकेस और हाइफ़न-बीच शब्दों के बीच एक सीधा सरल प्रतिलेख है, इसलिए मैं उन्हें बदलने के लिए रेगेक्स का उपयोग कर सकता हूं। लेकिन शायद कुछ ऐसे हैं जो इस तरह नहीं हैं?

मेरे सिर के ऊपर से मुझे नियमित अभिव्यक्तियों के साथ ऊंट के मामले के लिए पूंजीकृत अक्षरों से निपटने का एक कठिन समय लग रहा है।

संपादित करें: आह, मैं रेगेक्स प्रतिस्थापन के लिए एक फ़ंक्शन का उपयोग कर सकता हूं, हर बार जब मैं एक हाइफ़न देखता हूं, तो अगले अक्षर को ऊपरी मामले में परिवर्तित करता हूं।

+0

सीएसएस गुणों में आम तौर पर हाइफ़न होते हैं, अंडरस्कोर नहीं होते हैं। – Spudley

+0

हाँ, मेरा बुरा। फिक्स्ड –

उत्तर

5

तो आप मूल रूप से jQuery.css() को पुनर्निर्मित कर रहे हैं। हो सकता है कि कैसे jQuery हल CamelCase समस्या मदद कर सकता है एक नज़र: https://github.com/jquery/jquery/blob/master/src/core.js#L600

+2

मुझे लगता है कि उनका समाधान वास्तव में कैमेलकेस में कनवर्ट करना है, तो मैं यही करूँगा: 'फ़ंक्शन टू कैमेलकेस (वेरिएबल) {वापसी variable.replace (/ - ([az])/g, function (str, letter) {वापसी पत्र .toUpperCase();});} ' –

+0

मुझे आपकी परिस्थितियों/पर्यावरण/मांगों को नहीं पता है, लेकिन आमतौर पर jQuery (जैसे व्यापक प्रसार और भारी उपयोग) पुस्तकालयों का उपयोग करना बुरा विचार नहीं है। वे आम तौर पर उन चीजों पर विचार करते हैं जिन्हें आप नहीं जानते हैं (जैसे आईई-विक्रेता विक्रेता उपसर्ग को ठीक से नहीं दबा रहा है)। मैं jQuery का प्रचार नहीं कर रहा हूं, लेकिन आपके पास इसका उपयोग न करने के लिए निविड़ अंधकार कारण होना चाहिए (या डोजो, या जो भी लाइब्रेरी आपकी नाव तैरती है)। – rodneyrehm

+0

इसके विपरीत, jQuery एक विशाल और अक्सर धीमी लाइब्रेरी है जिसे आप एक ही फ़ंक्शन के लिए जोड़ना नहीं चाहते हैं –

1

मैं एक ही बात के बारे में सवाल पूछने के लिए के बारे में था (और मैं इसे नाम "अनुवाद सीएसएस नाम जावास्क्रिप्ट समकक्षों से को \" करने का इरादा)। किसी भी तरह से मैंने अपना खुद का समाधान लिखना समाप्त कर दिया।

function cssNameToJsName(name) 
{ 
    var split = name.split("-"); 
    var output = ""; 
    for(var i = 0; i < split.length; i++) 
    { 
     if (i > 0 && split[i].length > 0 && !(i == 1 && split[i] == "ms")) 
     { 
      split[i] = split[i].substr(0, 1).toUpperCase() + split[i].substr(1); 
     } 
     output += split[i]; 
    } 
    return output; 
} 

function jsNameToCssName(name) 
{ 
    return name.replace(/([A-Z])/g, "-$1").toLowerCase(); 
} 
संबंधित मुद्दे