2011-06-17 15 views
5

कैसे आप एक सीएसएस संपत्ति से पहले तत्व जोड़ दिया जाता है मिल सकता है?संलग्न करने से पहले सीएसएस() संपत्ति प्राप्त करें()?

सीएसएस

input.inp { 
    padding:3px 2px 3px 2px; 
} 

js

var elm = $('<input class="inp" type="text" />'); 

alert(elm.css('padding-left')); 
td.append(elm); 
alert(elm.css('padding-left')); 

केवल दूसरे अलर्ट मूल्य retuns ...

मैं इनपुट तत्व चौड़ाई करना चाहते हैं: 100% .. लेकिन आप के बाद से ऐसा नहीं कर सकता (जब इनपुट में स्वयं का पैडिंग होता है) मुझे चौड़ाई को पिक्सेल में सेट करने की आवश्यकता होती है

    टीडी जहां इनपुट संलग्न किया जाना है के
  1. चौड़ाई मिलता है ...
  2. छोड़ दिया और इनपुट
  3. का सही गद्दी पाने टीडी की चौड़ाई शून्य से छोड़ दिया और सही के साथ टीडी के लिए इनपुट संलग्न INPUT
+0

हाय, क्या मुझे पता है कि एल से पहले पैडिंग जानने का दायरा क्या है। जोड़ा गया है?यदि आप अपने विचार या जरूरतों को समझाते हैं तो हम एक समाधान खोजने में मदद कर सकते हैं। –

+0

प्रश्न संपादित करें ... – clarkk

+0

मुझे अभी भी समझ में नहीं आ रहा है .... http://jsfiddle.net/ –

उत्तर

0

में जोड़ने के लिए आप एक छिपा इनपुट डाल सकता है, वर्ग के साथ होता है, सीएसएस गुण प्राप्त और उन्हें इस्तेमाल ।

<input id="getPadding" class="inp" type="text" style="display:none" /> 

तब के बाद तत्व .. जोड़ दिया जाता है तुम बस तत्वों माता पिता चौड़ाई मिलता है और फिर उस चौड़ाई शून्य से गद्दी की राशि के लिए इनपुट सेट कर सकते हैं जैसा तो

$('td input').width($(this).parent().width() - [$('#getPadding').css('padding-left') + $('#getPadding').css('padding-right')]) 

वैकल्पिक रूप से वहाँ एक सीएसएस है केवल समाधान लेकिन यह आईई 7 में और

td input { 
    margin: 0px; 
    width: 100%; 
    height: 100%; 
    border: 0px; 
    display: block; 
    padding: 2px 5px; 
    -moz-box-sizing: border-box; 
    -ms-box-sizing: border-box; 
    -webkit-box-sizing: border-box; 
    box-sizing: border-box; 
} 
+0

हाँ, लेकिन पहले मुझे पैडिंग प्राप्त करने की आवश्यकता है .. – clarkk

+0

क्या आप नहीं जानते कि पैडिंग क्या है? अगर आपको – Blowsie

+0

की आवश्यकता है तो इसे स्क्रिप्ट में प्राप्त करना वाकई आसान है? – Blowsie

2

यदि यह डोम में नहीं है, तो आप AFAIK नहीं कर सकते हैं।

+0

फिर स्टाइलशीट से संपत्ति कैसे प्राप्त कर सकते हैं? – clarkk

+0

मेरा उत्तर आपको – genesis

+0

में मदद करेगा, मैंने सोचा था कि इसे डीओएम में जोड़ा गया था क्योंकि आपने पहली पंक्ति में $() के साथ एल्म बनाया था? – clarkk

1

शायद क्योंकि पैडिंग स्टाइल शीट में है, और यह दस्तावेज़ में स्थिति पर निर्भर करता है जो सीएसएस तत्व पर लागू होता है। तो जब तत्व जगह में नहीं है, तो इसमें अभी तक शैलियों नहीं हैं। इसे कम से कम डीओएम का हिस्सा होना चाहिए, और (सीएसएस चयनकर्ताओं के आधार पर) डीओएम में सटीक स्थिति भी मायने रख सकती है।

-1
var padbefore = $("elmid").css('padding-left'); 
alert(padbefore); 
$("td").append('elmid'); 
var paddafter = $("elmid").css('padding-left'); 
alert(paddafter); 
0

जब आप ऐसा करेंगे:

$('<input class="inp" type="text" />'); 

कर के रूप में ही है:

var input = document.createElement("input"); 
input.type = "text"; 
input.className = "inp"; 

और इन दोनों ही मामलों में वे एक अलग तत्व लौट आते हैं।

चूंकि तत्व को DOM में जोड़ा नहीं गया है, फिर भी class प्रभावित नहीं होता है इसलिए Css तत्व पर लागू होता है।

तो जब आप पैडिंग प्राप्त करने का प्रयास करते हैं तो यह सेट नहीं किया जाएगा।

आप इसे प्राप्त करने में सक्षम करने के लिए गद्दी इनलाइन जोड़ने के लिए इससे पहले कि आप DOM

$('<input class="inp" type="text" />').css("padding", "5px"); 
+0

तत्व को जोड़ने से पहले आप पैडिंग कैसे प्राप्त कर सकते हैं? – clarkk

+0

आपको डीओएम में जोड़े जाने से पहले पैडिंग इनलाइन जोड़ना होगा। – Tomgrohl

+0

और इसका मतलब क्या है? – clarkk

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