Cómo establecer la imagen src usando jQuery
-
24-09-2019 - |
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:
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:
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.
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(')','') )