Как установить изображение src с помощью jQuery
Я пытаюсь изменить атрибут src изображения, используя jQuery
jQuery("#imageID").attr('src','http://localhost:8080/images/1/myImage.png' );
используя приведенный выше код, я могу изменить атрибут src, но когда я попробую это: -
jQuery("#imageID").attr('src',jQuery("#imageBlock").css('background-image') );
Я не могу изменить src.
при условии
alert ( jQuery("#imageBlock").css('background-image') );
возвращает:
url (http://localhost:8080/images/1/myImage.png)
Изменить # 1
Просто, когда я собирался принять решение. Должен сказать, почти все решения работали в ФФ. Я пробовал:
- срез (4, -1);
- split ( "(" ) [1] > затем замените ( ")", "");
Я думаю, что другие также будут работать. Но ни одно из решений не работает в IE.
Причина:
в то время как FF возвращает:
url (http://localhost:8080/images/1/myImage.png)
IE Возвращает:
url ( " http://localhost:8080/images/1/myImage.png" )
^^ помните цитаты здесь
Теперь, каким может быть общий способ установки src attr. Нужно ли тестировать браузер, если он IE или нет?
Это рабочий код.
var src = "";
if ( jQuery.browser.msie ) {
src = jQuery("#imageBlock").css('background-image').slice(5,-2);
}else{
src = jQuery("#imageBlock").css('background-image').slice(4,-1);
}
jQuery("#imageID").attr('src', src );
Мне это действительно не нравится: x. Если есть другое решение, чем это, сообщите мне, или я немедленно приму решение slice
.
Ответы
Ответ 1
IMO, slice
более подходит, чем substring
или replace
. Попробуйте следующее:
jQuery("#imageID").attr(
'src',
jQuery("#imageBlock").css('background-image').slice(4,-1)
);
Здесь вы нарезаете строку между url(
и )
. Для подробного описания метода см. MDC в slice.
Ответ 2
Вам нужно извлечь часть url:
var backgroundImage = $("#imageBlock")
.css('backgroundImage')
.replace(/"/g,"")
.replace(/url\(|\)$/ig, "");
jQuery("#imageID").attr('src', backgroundImage);
Ответ 3
Это потому, что строка url() обернута вокруг него. Вам нужно будет удалить его из строки, например, используя функцию replace...
var bgimg = jQuery("#imageBlock").css('background-image').replace('url(', '');
bgimg.replace(')', '');
Ответ 4
Вам нужно будет отключить части url(
и закрытие )
для этого.
So url(http://localhost:8080/images/1/myImage.png)
становится
http://localhost:8080/images/1/myImage.png
Вы можете сделать это с помощью подстроки, замены регулярного выражения или любого метода по вашему выбору.
http://www.w3schools.com/jsref/jsref_replace.asp
Может быть:
jQuery("#imageID").attr('src',jQuery("#imageBlock").css('background-image').replace('url(','').replace(')','') )