Eu tenho um URL de imagem em uma imageUrl
variável e estou tentando defini-lo como estilo CSS, usando jQuery:
$('myObject').css('background-image', imageUrl);
Isso parece não estar funcionando, como:
console.log($('myObject').css('background-image'));
retorna none
.
Alguma idéia, o que estou fazendo de errado?
javascript
jquery
css
Blankman
fonte
fonte
Respostas:
Você provavelmente deseja isso (para torná-lo como uma declaração de imagem de plano de fundo CSS normal):
fonte
Você deseja incluir aspas duplas (") antes e depois do imageUrl, assim:
Dessa forma, se a imagem tiver espaços, ela ainda será definida como uma propriedade.
fonte
$('myObject').css('background-image', 'url(' + encodeURIComponent(imageUrl) + ')');
$('.myObject').css('background-color', 'green');
trabalhar, mas não alterar a imagem sem aspas duplas. Obrigado!encodeURIComponent
não funcionará se parte do seu URL já contiver caracteres de escape de URL. Você deve escapar potencial caractere de aspas duplas em imageUrl embora:$('myObject').css('background-image', 'url("' + imageUrl.replace(/"/g, '\\"') + '")');
$('#elem').css('background-image', 'url(' + encodeURIComponent(thumbData.url) + ')');
me deubackground-image: url("%2Ffiles%2Fusers%2Fthumbs%2F36206608-hd-pics-3.jpg");
Como alternativa ao que os outros estão sugerindo corretamente, acho mais fácil alternar classes CSS, em vez de configurações CSS individuais (especialmente URLs de imagem de plano de fundo). Por exemplo:
fonte
Aqui está o meu código:
Aproveite amigo
fonte
Além das outras respostas, você também pode usar "fundo". Isso é particularmente útil quando você deseja definir outras propriedades relacionadas à maneira como a imagem é usada pelo plano de fundo, como:
fonte
Para aqueles que usam um URL real e não uma variável:
fonte
Tente modificar o atributo "style":
fonte
Interpolação de string para o resgate.
fonte
O problema que eu estava tendo é que continuava adicionando um ponto-e-vírgula
;
no final dourl()
valor, o que impedia o funcionamento do código.CÓDIGO NÃO FUNCIONANDO:
CÓDIGO DE TRABALHO:
Observe o ponto e vírgula omitido
;
no final do código de trabalho. Eu simplesmente não conhecia a sintaxe correta e é realmente difícil perceber. Espero que isso ajude alguém no mesmo barco.fonte
Não esqueça que a função css do jQuery permite que objetos sejam transmitidos, o que permite definir vários itens ao mesmo tempo. O código respondido ficaria assim:
$(this).css({'background-image':'url(' + imageUrl + ')'})
fonte
fonte