2012-06-27 16 views
6

पर मैं एक कोड है कि उस तरह लग रहा है उपयोग कर रहा हूँ स्थानीय रूप से लोड किया गया।jquery.width वापसी 0 छवि

लेकिन सच में, अगर मैं ऐसा करता हूं। विवाद, मुझे अपेक्षित चौड़ाई मिल जाएगी और फिर मैं अपनी extjs विंडो को बदलने के लिए यहां से कुछ प्रकार की गणना कर सकता हूं।

कुछ प्रयासों के बाद, मुझे एहसास हुआ कि अगर मैं $ (यह) करता हूं तो मेरे द्वारा किए गए सभी गुणों का कोई प्रभाव नहीं पड़ता है।

$(this).width(40); कर रहा है मेरी छवि की चौड़ाई नहीं बदलेगा लेकिन this.width = 40 मेरी छवि की चौड़ाई बदल देगा। ऐसा लगता है कि $(this) मेरे HTMLImageElement को एक नए तत्व के भीतर कॉपी कर रहा था और उन परिवर्तनों को तभी लागू किया जाएगा जब मैंने पुराने को बदलने के लिए फिर से डोम में जोड़ा था।

मुझे समझ में नहीं आता कि वहां क्या हो रहा है।

संपादित

यह वही मेरी img चर होता है।

img = $('<img>'); 
img.attr('src', '....image'); 

संपादित 2

यह वास्तव में तथ्य यह है कि jQuery स्मृति छवियों में के लिए छवि का आकार संभाल नहीं करता, लेकिन मुझे लगा कि यह ExtJS का उपयोग कर दोहराना नहीं करने के लिए किसी के लिए भी अच्छा होगा परिवर्तन नहीं करता है मेरी त्रुटि। मेरे मामले में बड़ी समस्या यह है कि img ऑब्जेक्ट का उपयोग मैंने एक वैध ऑब्जेक्ट था, लेकिन जब से मैं ExtJs का उपयोग कर रहा हूं, मैंने अनजाने में एक बेवकूफ गलती की है। मैं अपनी खिड़की कि जिस तरह से ...

Ext.create('Ext.Window', 
    // some settings 
    items: [{ 
     html: img.wrap('<div>').parent().html(), 
    // etc 

बनाई दूसरे शब्दों में, इस घटना मेरे द्वारा बनाए गए img पर था, लेकिन मैं वास्तव में कभी नहीं डोम को img गयी। एक्सटीजे ने डीओएम में एचटीएमएल टेक्स्ट जोड़ा जो एक नई वस्तु बनाई गई जिसे ईवेंट के माध्यम से संशोधित नहीं किया जा सकता है।

इसलिए मुझे नया तत्व ढूंढने के लिए एक आईडी बनाना है और यह सब modalWindow.show() पर कॉल के बाद किया जाना है। उसके बाद सब कुछ पूरी तरह से काम करता है।

विंडो का आकार बदलने के लिए, यदि आयाम सेट हैं, तो आप उन्हें null पर सेट कर सकते हैं और विंडो पर डूलाउट कॉल कर सकते हैं और यह विंडोज़ का पुनर्मूल्यांकन करेगा।

+1

क्या आप संबंधित HTML पोस्ट कर सकते हैं? इसके अलावा, आपको इसके लिए jQuery की आवश्यकता नहीं होगी। आपको सीधे जावास्क्रिप्ट में संपत्ति तक पहुंचने में सक्षम होना चाहिए – pixelbobby

+1

उस कोड में परिवर्तनीय 'img' का मान वास्तव में क्या है? दूसरे शब्दों में यह कैसे सेट किया जाता है? – Pointy

+0

['.load()'] (http://api.jquery.com/load/) का पहला पैरामीटर यूआरएल होना चाहिए जिसे आप लोड करना चाहते हैं, फिर पूरा फ़ंक्शन। 'Img' क्या है? – sachleen

उत्तर

3

आपको पता चला कि jQuery(this).width() स्मृति में छवियों के लिए काम नहीं करता है। विकल्प this.width/height का उपयोग करना है या इसे पृष्ठ पर जोड़ना और इसे पढ़ना है।

+0

काम नहीं करता है, इसलिए मैं इस का उपयोग करने के साथ फंस गया हूं। यह वही है क्योंकि मैं इसे पृष्ठ पर फिर से नहीं जोड़ सकता? –

+0

हां आपको इसका उपयोग करने की ज़रूरत है। विद, यदि आप वास्तव में चाहते हैं तो आप attr() का उपयोग कर सकते हैं। यह यहां एक बड़ा सौदा नहीं है। – epascarello

+0

मुझे ऐसा लगता है, मैंने jQuery.width पर एक टिप्पणी देखी है जो एक साल पहले की तारीखें कहती है। यह एक अजीब व्यवहार है। इसमें लेआउट के साथ कुछ करना होगा और गणना आयाम कैसा है, लेकिन फिर भी एक छवि वास्तव में स्वयं के अलावा किसी और चीज पर निर्भर नहीं होती है और सीएसएस –

3

मुझे लगता है कि आप इस प्रयास करना चाहिए ...

$("img").load(function(){ 
    // do some stuff 
    $(this).width(); 

}); 

आप केवल img टैग का उपयोग कर रहे संभालने। अगर आपके पास आईएमजी टैग की आईडी है तो आपको उदाहरण के लिए उपयोग करना चाहिए $ ("# idimg) .load (मज़ेदार ...... contd।)

+0

मैं टैग बना रहा हूं –

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