Tôi có một nút mà khi tôi nhấp vào nó, tôi muốn cảnh báo background-image
URL của #div1
.
Nó có khả thi không?
Tôi có một nút mà khi tôi nhấp vào nó, tôi muốn cảnh báo background-image
URL của #div1
.
Nó có khả thi không?
Câu trả lời:
Tôi thường thích .replace()
biểu thức chính quy khi có thể, vì nó thường dễ đọc hơn: http://jsfiddle.net/mblase75/z2jKA/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)
? Thay thế của bạn gây ra biến bg my%20picture%20Copy\(1\.jpg)
. Nó cũng không loại bỏ trích dẫn (ví dụ url("the picture.jpg")
).
%20
dấu ngoặc đơn và hoặc tự hỏi bản thân xem liệu bạn có thực sự cần chúng ở đó ngay từ đầu hay không. Nếu trích dẫn có vấn đề, hãy sử dụng giải pháp của RobW để thay thế.
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")
Có, điều đó có thể xảy ra:
$("#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
phương thức trả về giá trị của một tài sản, khi gọi với một đối số.
background-image: url('photo(2012).png');
Với đoạn mã của bạn, bạn sẽ nhận được "'photo (2012.png')", điều này rõ ràng là không chính xác.
Tôi có câu trả lời được cải thiện một chút, xử lý các định nghĩa CSS mở rộng như:
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))
Mã JavaScript:
var bg = $("div").css("background-image")
bg = bg.replace(/.*\s?url\([\'\"]?/, '').replace(/[\'\"]?\).*/, '')
Kết quả:
"http://d36xtkk24g8jdx.cloudfront.net/bluebar/359de8f/images/shared/noise-1.png"
Như đã đề cập, giải pháp Blazemongers không xóa được dấu ngoặc kép (ví dụ như Firefox trả về). Vì tôi thấy giải pháp của Rob Ws khá phức tạp, nên thêm 2 xu của tôi vào đây:
$('#div1').click (function(){
url = $(this).css('background-image').replace(/^url\(['"]?/,'').replace(/['"]?\)$/,'');
alert(url);
})
Tôi nghĩ rằng việc sử dụng một biểu thức chính quy cho điều này bị lỗi chủ yếu do
Vì các thành phần url (" và ") là không đổi, hãy cắt chuỗi của bạn như sau:
$("#id").click(function() {
var bg = $(this).css('background-image').trim();
var res = bg.substring(5, bg.length - 2);
alert(res);
});
"
s là tùy chọn trong cú pháp này. url(myimg.jpg)
hoạt động tốt ở đây.
Tôi đang sử dụng cái này
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
}
Đây là một regex đơn giản sẽ loại bỏ url("
và ")
khỏi chuỗi được trả về.
var css = $("#myElem").css("background-image");
var img = css.replace(/(?:^url\(["']?|["']?\)$)/g, "");