2012-06-09 6 views
9

मेरे पास एक ही question है (यहां पर टिप्पणी करने में सक्षम नहीं था, शायद एक निजीकृत नहीं है), मैं स्टाइलशीट में परिभाषित सीएसएस चौड़ाई मान प्राप्त करना चाहता हूं लेकिन अभी तक नहीं डोम में किसी भी तत्व पर लागू किया, (उत्तरदायी मीडिया क्वेरी के साथ ग्रिड के साथ अपने बूटस्ट्रैप सीएसएस)jquery- अभी तक लागू कक्षा के लिए सीएसएस गुण मान प्राप्त करें

.span6 { 
width: 570px; 
} 

हालांकि इस

$('<div/>').addClass('span6').width(); 

की तरह ऊपर संदर्भित प्रश्न वापसी 0 यानी में प्रदान की जाती है, लेकिन समाधान काम करता है अगर मैं कुछ करना इस

की तरह
$('<div/>').addClass('span6').hide().appendTo('body').width(); 

उस div को जोड़ने के बिना कोई आसान तरीका?

+0

आप वास्तव में (वास्तव में) तत्व डालने से बचना चाहते हैं, तो आप चौड़ाई आप की जरूरत के साथ एक नक्शा बना सकता है: पी – leopic

+0

क्यों आप ऐसा करना चाहते हैं? हो सकता है कि आपके मुद्दे को हल करने का एक वैकल्पिक/आसान तरीका हो? –

+0

पिछली बार मैंने "jquery के साथ स्टाइल गुण प्राप्त करें" प्रश्न देखा था, यह कुछ regex के साथ स्वीकार किए गए उत्तर के रूप में समाप्त हुआ, मुझे लगता है कि आपका वर्तमान समाधान काफी सरल है। आप वांछित सीएसएस संपत्ति मूल्य प्राप्त करने के बाद डीओएम को साफ करने के लिए '.remove()' को कॉल कर सकते हैं या सीएसएस को लागू करने और मूल्य प्राप्त करने के लिए हमेशा 'डिस्प्ले: none' तत्व' को लागू कर सकते हैं, बाद में लागू सीएसएस क्लास को हटा सकते हैं। –

उत्तर

28

आदेश में एक सीएसएस संपत्ति के मूल्य को पढ़ने के लिए आप उसे निकाल गतिशील, डोम के लिए एक छिपा तत्व सम्मिलित संपत्ति पढ़ सकते हैं और अंत में करने की जरूरत है में: द्वारा

var getCSS = function (prop, fromClass) { 

    var $inspector = $("<div>").css('display', 'none').addClass(fromClass); 
    $("body").append($inspector); // add to DOM, in order to read the CSS property 
    try { 
     return $inspector.css(prop); 
    } finally { 
     $inspector.remove(); // and remove from DOM 
    } 
}; 

jsFiddle here

+1

मूल रूप से ओपी क्या कर रहा है - '.css ('display', 'none') 'वस्तुतः' .hide() 'जैसा ही है, लेकिन इसे एक प्रयोग करने योग्य फ़ंक्शन और' अंत में 'ब्लॉक में विस्तारित करने के लिए +1 'वापसी' के बाद 'चलाता है'। –

+0

"कम लिखना और अधिक jquery" के साथ ऐसा करने का एकमात्र आसान तरीका हो सकता है: पी –

+0

मैंने इसे 'पृष्ठभूमि-स्थिति' के लिए आज़माया है, लेकिन यह वास्तविक मान के बजाय '0% 0%' लौटा रहा है। .. –

4

महान जवाब जोस। मैंने इसे अधिक जटिल सीएसएस चयनकर्ताओं के साथ मदद करने के लिए संशोधित किया।

var getCSS2 = function (prop, fromClass, $sibling) { 

    var $inspector = $("<div>").css('display', 'none').addClass(fromClass); 
    if($sibling != null){ 
     $sibling.after($inspector); //append after sibling in order to have exact 
    } else { 
     $("body").append($inspector); // add to DOM, in order to read the CSS property 
    } 
    try { 
     return $inspector.css(prop); 
    } finally { 
     $inspector.remove(); // and remove from DOM 
    } 
}; 

JSFiddle

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