Mam adres URL obrazu w imageUrl
zmiennej i próbuję ustawić go jako styl CSS, używając jQuery:
$('myObject').css('background-image', imageUrl);
To wydaje się nie działać, ponieważ:
console.log($('myObject').css('background-image'));
zwraca none
.
Masz pomysł, co robię źle?
javascript
jquery
css
Blankman
źródło
źródło
Odpowiedzi:
Prawdopodobnie chcesz tego (aby wyglądało to jak zwykła deklaracja obrazu tła CSS):
źródło
Będziesz chciał zawrzeć podwójne cudzysłowy („) przed i za imageUrl w następujący sposób:
W ten sposób, jeśli obraz ma spacje, nadal będzie ustawiony jako właściwość.
źródło
$('myObject').css('background-image', 'url(' + encodeURIComponent(imageUrl) + ')');
$('.myObject').css('background-color', 'green');
do pracy, ale nie mogłem zmienić obrazu bez podwójnych cudzysłowów. Dzięki!encodeURIComponent
nie będzie działać, jeśli część adresu URL zawierała już znaki zmiany znaczenia adresu URL. Powinieneś jednak uniknąć potencjalnej podwójnej cudzysłowy w imageUrl:$('myObject').css('background-image', 'url("' + imageUrl.replace(/"/g, '\\"') + '")');
$('#elem').css('background-image', 'url(' + encodeURIComponent(thumbData.url) + ')');
background-image: url("%2Ffiles%2Fusers%2Fthumbs%2F36206608-hd-pics-3.jpg");
Alternatywnie do tego, co inni sugerują poprawnie, łatwiej jest mi zwykle przełączać klasy CSS, zamiast indywidualnych ustawień CSS (zwłaszcza adresów URL obrazów tła). Na przykład:
źródło
Oto mój kod:
Ciesz się, przyjacielu
źródło
Oprócz innych odpowiedzi możesz także użyć „tła”. Jest to szczególnie przydatne, gdy chcesz ustawić inne właściwości związane ze sposobem użycia obrazu w tle, takie jak:
źródło
Dla tych, którzy używają rzeczywistego adresu URL, a nie zmiennej:
źródło
Spróbuj zmodyfikować atrybut „style”:
źródło
Interpolacja łańcuchów na ratunek.
źródło
Problemem było to, że dodawałem średnik
;
na końcuurl()
wartości, co uniemożliwiało działanie kodu.KOD NIE DZIAŁA:
KOD PRACY:
Zwróć uwagę na opuszczony średnik
;
na końcu w działającym kodzie. Po prostu nie znałem poprawnej składni i naprawdę trudno to zauważyć. Mam nadzieję, że pomoże to komuś innemu na tej samej łodzi.źródło
Nie zapominaj, że funkcja css jQuery pozwala na przekazywanie obiektów, co pozwala ustawić wiele elementów jednocześnie. Kod odpowiedzi będzie wyglądał następująco:
$(this).css({'background-image':'url(' + imageUrl + ')'})
źródło
źródło