2010-02-02 2 views
41

Я пытаюсь изменить атрибут изображения Src с помощью JQueryКак установить СРК изображения с помощью 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.

+0

[Это] [1] является простым и к точке. [1]: http://stackoverflow.com/questions/18867735/how-to-change-image-attrsrc-using-jquery –

ответ

34

ИМО, slice является более подходящим, чем substring или replace. Попробуйте это:

jQuery("#imageID").attr(
    'src', 
    jQuery("#imageBlock").css('background-image').slice(4,-1) 
); 

Здесь вы нарезка строку между url( и ). См. MDC на slice для подробного описания метода.

+0

будет работать в IE? –

+1

@ Rakesh Juyal: Да. Я сам на самом деле код 95% в IE. Метод среза определен в третьем выпуске ECMAScript и находится в MSDN: http://msdn.microsoft.com/en-us/library/6w1bzf9f(VS.85).aspx. –

0

Вам нужно будет снять url( и закрыть ) запчасти для этого, чтобы работать.

Так 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(')',''))

2

Это потому, что строка url() обернута вокруг него. Вам нужно лишить его из строки, например, с помощью функции замены ...

var bgimg = jQuery("#imageBlock").css('background-image').replace('url(', ''); 
bgimg.replace(')', ''); 
7

Вы должны извлечь URL-адрес: часть

var backgroundImage = $("#imageBlock") 
    .css('backgroundImage') 
    .replace(/"/g,"") 
    .replace(/url\(|\)$/ig, ""); 
jQuery("#imageID").attr('src', backgroundImage); 
+0

btw, wht - это 'replace (/ url \ (| \) $/ig," ");' –

+0

Он заменяет часть url() строки "" так, что вы получаете местоположение изображения на своем своя. –

+0

Убирает '' 'необходимо? Я всегда думал, что браузер возвратил разобранное представление строки url, которая не содержит кавычек? Кроме того, если я ошибаюсь, не должно быть регулярное выражение'/["']/g'? –

Смежные вопросы