J'ai une URL d'image dans une imageUrl
variable et j'essaie de la définir comme style CSS, en utilisant jQuery:
$('myObject').css('background-image', imageUrl);
Cela semble ne pas fonctionner, car:
console.log($('myObject').css('background-image'));
retourne none
.
Une idée, ce que je fais mal?
javascript
jquery
css
Blankman
la source
la source
Réponses:
Vous voulez probablement cela (pour le faire comme une déclaration d'image d'arrière-plan CSS normale):
la source
Vous voudrez inclure des guillemets doubles (") avant et après l'imageUrl comme ceci:
De cette façon, si l'image a des espaces, elle sera toujours définie comme une propriété.
la source
$('myObject').css('background-image', 'url(' + encodeURIComponent(imageUrl) + ')');
$('.myObject').css('background-color', 'green');
, mais pas changer l'image sans les guillemets doubles. Merci!encodeURIComponent
ne fonctionnera pas si une partie de votre URL contenait déjà des caractères d'échappement d'URL. Vous devriez cependant échapper au caractère de double guillemet potentiel dans imageUrl:$('myObject').css('background-image', 'url("' + imageUrl.replace(/"/g, '\\"') + '")');
$('#elem').css('background-image', 'url(' + encodeURIComponent(thumbData.url) + ')');
m'a donnébackground-image: url("%2Ffiles%2Fusers%2Fthumbs%2F36206608-hd-pics-3.jpg");
Alternativement à ce que les autres suggèrent correctement, je trouve généralement plus facile de basculer les classes CSS, au lieu des paramètres CSS individuels (en particulier les URL des images d'arrière-plan). Par exemple:
la source
Voici mon code:
Profitez-en, ami
la source
En plus des autres réponses, vous pouvez également utiliser "background". Ceci est particulièrement utile lorsque vous souhaitez définir d'autres propriétés relatives à la façon dont l'image est utilisée par l'arrière-plan, telles que:
la source
Pour ceux qui utilisent une URL réelle et non une variable:
la source
Essayez de modifier l'attribut "style":
la source
L'interpolation de cordes à la rescousse.
la source
Le problème que je rencontrais, c'est que je continuais à ajouter un point-virgule
;
à la fin de laurl()
valeur, ce qui empêchait le code de fonctionner.CODE NON FONCTIONNANT:
CODE DE TRAVAIL:
Notez le point-virgule omis
;
à la fin dans le code de travail. Je ne connaissais tout simplement pas la syntaxe correcte, et il est vraiment difficile de la remarquer. J'espère que cela aide quelqu'un d'autre dans le même bateau.la source
N'oubliez pas que la fonction jQuery css permet de passer des objets, ce qui vous permet de définir plusieurs éléments en même temps. Le code répondu ressemblerait alors à ceci:
$(this).css({'background-image':'url(' + imageUrl + ')'})
la source
la source