javascript - Ställa in bakgrundsbild med hjälp av jQuery CSS-egenskap
Jag har en bild-URL i en imageUrl-variabel och försöker sätta den som CSS-stil, med jQuery:
$('myObject').css('background-image', imageUrl);
Det verkar inte fungera, eftersom:
console.log($('myObject').css('background-image'));
returnerar none.
Någon idé om vad jag gör fel?
Svar #1
Du vill förmodligen ha detta (för att göra det som en vanlig CSS background-image-deklaration):
$('myObject').css('background-image', 'url(' + imageUrl + ')');
Svar #2
Du kommer att vilja inkludera dubbla citattecken (") före och efter imageUrl på det här sättet:
$('myOjbect').css('background-image', 'url("' + imageUrl + '")');
På så sätt, om bilden har mellanslag kommer den fortfarande att sättas som en egenskap.
Svar #3
Alternativt till vad de andra korrekt föreslår, tycker jag vanligtvis att det är lättare att växla CSS-klasser, istället för individuella CSS-inställningar (särskilt bakgrundsbilds-URL:er). Till exempel:
// in CSS
.bg1
{
background-image: url(/some/image/url/here.jpg);
}
.bg2
{
background-image: url(/another/image/url/there.jpg);
}
// in JS
// based on value of imageUrl, determine what class to remove and what class to add.
$('myOjbect').removeClass('bg1').addClass('bg2');
Svar #4
Här är min kod:
$('body').css('background-image', 'url("/apo/1.jpg")');Njut, vän
Svar #5
Ytterligare till de andra svaren kan du också använda "background". Detta är särskilt användbart när du vill ställa in andra egenskaper som rör hur bilden används av bakgrunden, såsom:
$("myObject").css("background", "transparent url('"+imageURL+"') no-repeat right top");
Svar #6
Problemet jag hade var att jag fortsatte att lägga till ett semikolon ; i slutet av url()-värdet, vilket hindrade koden från att fungera.
❌ FUNKAR INTE KOD:
$('#image_element').css('background-image', 'url(http://example.com/img.jpg);');
//--------------------------------------------------------------------------^✅ FUNKANDE KOD:
$('#image_element').css('background-image', 'url(http://example.com/img.jpg)');
Observera det utelämnade semikolonet ; i slutet i den fungerande koden. Jag visste helt enkelt inte den korrekta syntaxen, och det är verkligen svårt att märka det. Förhoppningsvis hjälper detta någon annan i samma situation.
