Pregunta

Estoy intentando cambiar el atributo src imagen usando jQuery

jQuery("#imageID").attr('src','http://localhost:8080/images/1/myImage.png' );

utilizando el código anterior i puede cambiar el atributo src, pero cuando intento esto: -

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

soy incapaz de cambiar el src.

proporcionado

alert ( jQuery("#imageBlock").css('background-image') );

retornos:

  

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

Editar # 1 Justo cuando estaba a punto de aceptar la solución. Debo decir, casi toda la solución trabajó en FF. Probé:

  • rebanada (4, -1);
  • split ( "(") [1]> entonces reemplazar ( ")", "");

supongo que otros también trabajar. Sin embargo, ninguna de las soluciones está trabajando en IE. Razón de ser: mientras que los retornos FF:

  

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

Las devoluciones por ejemplo:

  

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

^^ mente las cotizaciones aquí

Ahora, lo que podría ser la forma genérica para establecer el attr src. ¿Es necesario probar el navegador IE si es o no?

Este es el código de trabajo.

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 );

Realmente no me gusta: x. Si no hay otra solución que esto, entonces por favor hágamelo saber o de lo contrario voy a aceptar la solución slice enseguida.

¿Fue útil?

Solución

OMI, slice es más apropiado que substring o replace. Prueba esto:

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

A continuación, usted está cortando la cuerda en el medio url( y ). Ver MDC en rebanada para una descripción detallada del método.

Otros consejos

Hay que extraer la parte url:

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

Se debe a que la cadena url () se envuelve alrededor de ella. Tendrá que despojarlo de la cadena, por ejemplo utilizando la función Reemplazar ...

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

necesitaría para despojar a las partes url( ) y cierre hacia fuera para que eso funcione.

Así url(http://localhost:8080/images/1/myImage.png)

se convierte

http://localhost:8080/images/1/myImage.png

Se puede hacer esto con una subcadena, una expresión regular o sustituir cualquier método de su elección.

http://www.w3schools.com/jsref/jsref_replace.asp

Tal vez:

jQuery("#imageID").attr('src',jQuery("#imageBlock").css('background-image').replace('url(','').replace(')','') )

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top