Как установить изображение src с помощью jQuery - PullRequest
43 голосов
/ 02 февраля 2010

Я пытаюсь изменить атрибут 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 Как раз когда я собирался принять решение. Надо сказать, почти все решения работали в FF. Я попробовал:

  • срез (4, -1);
  • split ("(") [1]> затем заменить (")", "");

Я думаю, другие тоже будут работать. Но ни одно из решений не работает в IE. Причина в том, что: в то время как FF возвращает:

URL (http://localhost:8080/images/1/myImage.png)

IE возвращает:

URL ( "http://localhost:8080/images/1/myImage.png")

^^ не забывайте про цитаты здесь

Теперь, что может быть общим способом установить атрибут src. Нужно ли тестировать браузер, если это 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.

Ответы [ 4 ]

35 голосов
/ 02 февраля 2010

IMO, slice более подходит, чем substring или replace. Попробуйте это:

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

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

7 голосов
/ 02 февраля 2010

Вам нужно извлечь часть URL:

var backgroundImage = $("#imageBlock")
    .css('backgroundImage')
    .replace(/"/g,"")
    .replace(/url\(|\)$/ig, "");
jQuery("#imageID").attr('src', backgroundImage);
2 голосов
/ 02 февраля 2010

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

var bgimg = jQuery("#imageBlock").css('background-image').replace('url(', '');
bgimg.replace(')', '');
0 голосов
/ 02 февраля 2010

Вам нужно было бы раздеть 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(')','') )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...