jQuery

2010-02-02 4 views
41

मैं jQueryjQuery

jQuery("#imageID").attr('src','http://localhost:8080/images/1/myImage.png'); 

का उपयोग करके उपरोक्त कोड मैं src विशेषता को बदल सकते हैं का उपयोग कर छवि src विशेषता को बदलने के लिए कोशिश कर रहा हूँ, लेकिन का उपयोग कर छवि src स्थापित करने के लिए कैसे जब मैं इस कोशिश: -

jQuery("#imageID").attr('src',jQuery("#imageBlock").css('background-image')); 

मैं src बदलने में असमर्थ हूँ।

यूआरएल (http://localhost:8080/images/1/myImage.png)

# 1 बस जब मैं समाधान को स्वीकार करने के बारे में था संपादित करें:

alert (jQuery("#imageBlock").css('background-image')); 

रिटर्न प्रदान की है। मुझे कहना होगा, एफएफ में लगभग सभी समाधान काम करते थे। मैंने कोशिश की:

  • टुकड़ा (4, -1);
  • विभाजन ("(") [1]> तो (की जगह ")", "");

मुझे लगता है कि अन्य लोगों को भी काम करेंगे। लेकिन आईई में कोई भी समाधान काम नहीं कर रहा है। कारण किया जा रहा है: एफएफ देता है, जबकि:

यूआरएल (http://localhost:8080/images/1/myImage.png)

आईई रिटर्न:

यूआरएल ("http://localhost:8080/images/1/myImage.png")

^^ मन उद्धरण यहां

अब, src attr सेट करने का सामान्य तरीका क्या हो सकता है। क्या मुझे ब्राउजर का परीक्षण करने की ज़रूरत है यदि यह आईई है या नहीं?

यह कामकाजी कोड है।

var src = ""; 
    if (jQuery.browser.msie) { 
     src = jQuery("#imageBlock").css('background-image').slice(5,-2);   
    }else{ 
     src = jQuery("#imageBlock").css('background-image').slice(4,-1); 
    } 
    jQuery("#imageID").attr('src', src); 

मुझे वास्तव में यह पसंद नहीं है: x। यदि इससे कोई दूसरा समाधान है, तो कृपया मुझे बताएं या अन्यथा मैं slice समाधान को तुरंत स्वीकार कर दूंगा।

+0

[यह] [1] सरल है और मुद्दे पर। [1]: http://stackoverflow.com/questions/18867735/how-to-change-image-attrsrc-using-jquery –

उत्तर

34

IMO, slicesubstring या replace से अधिक उपयुक्त है। यहाँ

jQuery("#imageID").attr(
    'src', 
    jQuery("#imageBlock").css('background-image').slice(4,-1) 
); 

, आप url( और ) के बीच में स्ट्रिंग टुकड़ा करने की क्रिया कर रहे हैं: यह कोशिश करो। विधि के विस्तृत विवरण के लिए slice पर एमडीसी देखें।

+0

यह IE में काम करेंगे? –

+1

@ राकेश जुयाल: हाँ। मैं वास्तव में आईई में 95% कोड करता हूं। स्लाइस विधि ईसीएमएस्क्रिप्ट 3 संस्करण में परिभाषित की गई है और एमएसडीएन पर है: http://msdn.microsoft.com/en-us/library/6w1bzf9f(VS.85).aspx। –

0

आपको url( को पट्टी करने और काम करने के लिए ) भागों को बंद करने की आवश्यकता होगी।

तो url(http://localhost:8080/images/1/myImage.png)

हो जाता है

http://localhost:8080/images/1/myImage.png

आप सबस्ट्रिंग के साथ ऐसा कर सकता है, एक regex बदलने के लिए या अपनी पसंद के किसी भी विधि।

http://www.w3schools.com/jsref/jsref_replace.asp

शायद:

jQuery("#imageID").attr('src',jQuery("#imageBlock").css('background-image').replace('url(','').replace(')',''))

2

ऐसा इसलिए है क्योंकि url() स्ट्रिंग इसके चारों ओर लपेटा गया है। आप को बदलने के समारोह का उपयोग कर, स्ट्रिंग से यह पट्टी उदाहरण के लिए आवश्यकता होगी ...

var bgimg = jQuery("#imageBlock").css('background-image').replace('url(', ''); 
bgimg.replace(')', ''); 
7

आप यूआरएल हिस्सा निकालने के लिए की जरूरत है:

var backgroundImage = $("#imageBlock") 
    .css('backgroundImage') 
    .replace(/"/g,"") 
    .replace(/url\(|\)$/ig, ""); 
jQuery("#imageID").attr('src', backgroundImage); 
+0

बीटीडब्ल्यू, यह '' प्रतिस्थापित है (/ url \ (| \) $/ig, ""); ' –

+0

यह स्ट्रिंग के url() भाग को" "से बदल देता है ताकि आपको छवि का स्थान मिल जाए। खुद। –

+0

'' 'जरूरी है? मैंने हमेशा सोचा था कि ब्राउजर ने यूआरएल स्ट्रिंग के विश्लेषण किए गए प्रतिनिधित्व को वापस कर दिया है, जो कि कोई उद्धरण नहीं है? इसके अलावा, अगर मैं गलत हूं, तो रेगेक्स'/["'] नहीं होना चाहिए/जी'? –