Установка фонового изображения с использованием свойства jQuery CSS

315

У меня есть URL-адрес изображения в переменной imageUrl, и я пытаюсь установить его как стиль CSS, используя jQuery:

$('myObject').css('background-image', imageUrl);

Кажется, что это не работает, поскольку:

console.log($('myObject').css('background-image'));

возвращает none.

Любая идея, что я делаю неправильно?

  • 1
    В чем именно заключается проблема? Jquery выдает ошибку?
  • 0
    Нет, это не правильно. Я регистрирую это, и это только не изменяется.
Показать ещё 1 комментарий
Теги:

10 ответов

822
Лучший ответ

Вероятно, вы хотите это сделать (чтобы сделать его похожим на обычное декларацию фонового изображения CSS):

$('myOjbect').css('background-image', 'url(' + imageUrl + ')');
  • 0
    Я делал это таким образом - но пробел между 'url' и левыми скобками вызывал сбой моего кода. Скопировал / вставил свой и понял проблему. Спасибо!
  • 0
    Я использую ваш код в этом скрипте, но получаю фоновое изображение: url ((неизвестно)); Это мой сценарий: var bg_img = jQuery ('. Wp-show-posts-inner'). Attr ('data-src'); jQuery ('. wp-show-posts-inner'). on ('mouseover', function () {jQuery ('. home-banner .bg'). css ('background-image', 'url (' + bg_img) + ')');}); Есть идеи почему?
59

Вы хотите включить двойные кавычки (") до и после imageUrl следующим образом:

$('myOjbect').css('background-image', 'url("' + imageUrl + '")');

Таким образом, если изображение имеет пробелы, оно все равно будет установлено как свойство.

  • 2
    В URL не должно быть пробелов. Пробелы должны быть закодированы.
  • 6
    в этом случае это должно быть $('myObject').css('background-image', 'url(' + encodeURIComponent(imageUrl) + ')');
Показать ещё 4 комментария
39

В качестве альтернативы тому, что другие правильно предлагают, проще всего переключать классы CSS, а не отдельные настройки CSS (особенно URL-адреса фоновых изображений). Например:

// 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');
  • 2
    Это намного лучший способ сделать что-то, потому что он позволяет вам использовать предварительный процессор css.
  • 0
    Это здорово, намного лучше, чем более прямое решение.
Показать ещё 4 комментария
15

Вот мой код:

$('body').css('background-image', 'url("/apo/1.jpg")');

Наслаждайтесь, друг

11

В дополнение к другим ответам вы также можете использовать "фон". Это особенно полезно, если вы хотите установить другие свойства, относящиеся к способу использования изображения фоном, например:

$("myObject").css("background", "transparent url('"+imageURL+"') no-repeat right top");
  • 0
    Этот ответ имел больше смысла, когда я подумал, что в оригинальной статье использовался фон, а не background-image. Я изменил свой ответ, чтобы придать ему больше смысла, и все равно оставлю его здесь для потомков.
  • 0
    Это не работает сейчас.
5

Для тех, кто использует фактический URL, а не переменную:

$('myObject'). css ('background-image', 'url (../../example/url.html)');

1

Строковая интерполяция на помощь.

let imageUrl = 'imageurl.png';
$('myOjbect').css('background-image', `url(${imageUrl})`);
0

Попробуйте изменить атрибут "style":

$('myObject').attr('style', 'background-image: url("' + imageUrl +'")');
  • 0
    заменит все другие стили. Не рекомендуется
0

Работайте для меня

$('myOjbect').css('background-image', 'url(' + imageUrl + ')');
-1
$('myObject').css({'background-image': 'url(imgUrl)',});
  • 0
    Это не будет работать, потому что URL заключен в одинарные кавычки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню