मेरे पास एक बटन है, जब मैं इसे क्लिक करता हूं तो मैं background-image
URL को अलर्ट करना चाहता हूं #div1
।
क्या यह संभव है?
मेरे पास एक बटन है, जब मैं इसे क्लिक करता हूं तो मैं background-image
URL को अलर्ट करना चाहता हूं #div1
।
क्या यह संभव है?
जवाबों:
मैं आमतौर पर .replace()
जब संभव हो तो नियमित अभिव्यक्तियों को पसंद करता हूं , क्योंकि इसे पढ़ना अक्सर आसान होता है: http://jsfiddle.net/mblase75/z2kka/2
$("div").click(function() {
var bg = $(this).css('background-image');
bg = bg.replace('url(','').replace(')','').replace(/\"/gi, "");
alert(bg);
});
url(my%20picture%20Copy\(1\).jpg)
? आपकी जगह bg वैरिएबल होने का कारण बनता है my%20picture%20Copy\(1\.jpg)
। यह भी उद्धृत नहीं करता है (जैसे url("the picture.jpg")
)।
%20
कोष्ठक से बाहर निकलने और कोष्ठकों को जोड़ने के लिए कुछ कोड जोड़ना होगा , या अपने आप से पूछना होगा कि क्या वास्तव में आपको पहली जगह में उनकी आवश्यकता है। यदि किसी समस्या में उद्धृत करते हैं, तो इसके बजाय रॉब के समाधान का उपयोग करें।
background-image:linear-gradient(rgba(0,0,0,0.2), rgba(0,0,0,0.4)), url("https://mdn.mozillademos.org/files/7693/catfront.png")
हाँ, यह संभव है:
$("#id-of-button").click(function() {
var bg_url = $('#div1').css('background-image');
// ^ Either "none" or url("...urlhere..")
bg_url = /^url\((['"]?)(.*)\1\)$/.exec(bg_url);
bg_url = bg_url ? bg_url[2] : ""; // If matched, retrieve url, otherwise ""
alert(bg_url);
});
.css
विधि जब एक तर्क के साथ लागू एक संपत्ति के मूल्य, देता है।
background-image: url('photo(2012).png');
आपके बिट कोड के साथ, आपको "फोटो (2012.png ')" मिलेगा, जो स्पष्ट रूप से गलत है।
मेरे पास थोड़ा बेहतर उत्तर है, जो विस्तारित सीएसएस परिभाषाओं को संभालता है जैसे:
background-image: url(http://d36xtkk24g8jdx.cloudfront.net/bluebar/359de8f/images/shared/noise-1.png), -webkit-linear-gradient(top, rgb(81, 127, 164), rgb(48, 96, 136))
जावास्क्रिप्ट कोड:
var bg = $("div").css("background-image")
bg = bg.replace(/.*\s?url\([\'\"]?/, '').replace(/[\'\"]?\).*/, '')
परिणाम:
"http://d36xtkk24g8jdx.cloudfront.net/bluebar/359de8f/images/shared/noise-1.png"
जैसा कि पहले ही उल्लेख किया गया है, ब्लेज़मॉन्गर्स समाधान उद्धरण को हटाने में विफल हो रहा है (जैसे फ़ायरफ़ॉक्स द्वारा लौटाया गया)। चूँकि मैं अपने 2 सेंट जोड़कर रोब डब्ल्यूएस समाधान को जटिल मानता हूं, इसलिए:
$('#div1').click (function(){
url = $(this).css('background-image').replace(/^url\(['"]?/,'').replace(/['"]?\)$/,'');
alert(url);
})
मुझे लगता है कि इसके लिए एक नियमित अभिव्यक्ति का उपयोग करना मुख्य रूप से दोषपूर्ण है
चूंकि url (" और ") घटक स्थिर हैं, इसलिए अपनी स्ट्रिंग को इस तरह ट्रिम करें:
$("#id").click(function() {
var bg = $(this).css('background-image').trim();
var res = bg.substring(5, bg.length - 2);
alert(res);
});
"
इस वाक्य रचना में s वैकल्पिक हैं। url(myimg.jpg)
यहाँ ठीक काम करता है।
मैं इस एक का उपयोग कर रहा हूँ
function getBackgroundImageUrl($element) {
if (!($element instanceof jQuery)) {
$element = $($element);
}
var imageUrl = $element.css('background-image');
return imageUrl.replace(/(url\(|\)|'|")/gi, ''); // Strip everything but the url itself
}
यहाँ एक सरल रेगेक्स है जो लौटे स्ट्रिंग से url("
और हटा देगा ")
।
var css = $("#myElem").css("background-image");
var img = css.replace(/(?:^url\(["']?|["']?\)$)/g, "");