2009-10-17 33 views
12

के बिना सीएसएस मूल्य प्राप्त करें मुझे आश्चर्य है कि क्या इसका उपयोग करते हुए डीओएम में कोई तत्व नहीं होने पर स्टाइलशीट फ़ाइल से सीएसएस मान प्राप्त करने का कोई तरीका है? मैं jQuery का उपयोग कर रहा हूं और मैं मूल्य प्राप्त करने के लिए चयनकर्ता $ ("। Classname")। Css() का उपयोग करता हूं। लेकिन मामले "classname" किसी भी तत्व में नहीं है, क्या मूल्य प्राप्त करने के लिए "धन्यवाद के साथडीओएम तत्व

उत्तर

12

बस उस कक्षा के नाम के साथ एक तत्व बनाएं और इसका निरीक्षण करें। आप अभी भी अपनी शैली गुण के सभी तक पहुँच प्राप्त,

var $el = $('<div class="classname"></div>'); 
var opacity = $el.css('opacity') // or whatever 

भी $el हालांकि वास्तव में डोम में मौजूद नहीं है: आप भी डोम में अटैच कर की जरूरत नहीं है।


संपादित: के रूप में टिप्पणी में उल्लेख किया है, इस दृष्टिकोण हमेशा आशा अनुरूप काम नहीं करता है (उदाहरण के लिए inherited css values .classname स्पष्ट रूप से, selector specificity .classname ऊपर, आदि पर परिभाषित नहीं)।

उदाहरण का अनुसरण करने के लिए विफल रहता है #foo करने के लिए एक स्टैंडअलोन .bar की है कि परे चयनकर्ता विशिष्टता बढ़ रही है कारण:

सीएसएस:

#foo .bar { color: red; } 

js:

var $el = $('<div class="bar"></div>'); 
$el.css('color'); // Expected: "red", Actual: "" 
+0

लिंक करने के लिए? मैं ('। Classname') आप ('

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

+0

बहुत बढ़िया विचार ... –

+5

ऐसा लगता है कि यह काम नहीं कर रहा है क्रोम ... – xpy

4

http://www.hunlock.com/blogs/Totally_Pwn_CSS_with_Javascript जो हो रही करने के लिए एक क्रॉस-ब्राउज़र दृष्टिकोण प्रस्तुत करता है देखें और गतिशील सीएसएस जोड़ने।

यह document.styleSheets के साथ काम करता है और दोनों IE के .rules और बाकी सब लोगों .cssRules

यह भी कुछ हद तक निकाला जा रहा है ताकि आप जानकारी के बारे में चिंता करने की जरूरत नहीं है का लाभ दिया है।

+0

और इसलिए ढेर अतिप्रवाह में एक और जवाब क्या विरासत में मिला शैलियों के बारे में क्षय :( – Gusk

0

क्रोमियम समस्या वैकल्पिक हल के लिए , आपको इसे शरीर में जोड़ना होगा:

नमूना सीएसएस:

.dummy { 
    min-width: 50px; 
    max-width: 250px; 
} 

नमूना जावास्क्रिप्ट:

$(document).ready(function() { 
    var dummy = $('<div class="dummy" style="display: none;"></div>').appendTo('body'); 
    console.log(dummy.css("min-width")); 
    console.log(dummy.css("max-width")); 
    dummy.remove(); 
}); 

यह सभी आधुनिक ब्राउज़रों, क्रोम, एफएफ, IE11 पर काम करता है।

संबंधित मुद्दे