43 votes

Comment définir l'image src en utilisant jQuery

Je suis en train de changer l'attribut src de l'image à l'aide de jQuery

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

en utilisant le code ci-dessus, je peux changer l'attribut src, mais quand j'ai essayer ceci:-

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

je suis incapable de changer la src.

fourni

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

retourne:

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

Edit #1 Juste quand j'étais sur le point d'accepter la solution. Je dois dire, presque tous les solution travaillé dans FF. J'ai essayé:

  • tranche(4,-1);
  • split("(")[1] > puis replace ( ")" , "" );

Je suppose que d'autres travaux. Mais aucune des solutions n'est de travail dans IE. Raison d'être: alors que FF retourne:

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

IE Retourne:

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

^^ l'esprit les citations ici

Maintenant, quel pourrait être le générique de la façon de définir la src attr. Dois-je tester le navigateur si c'est IE ou pas?

C'est le code de travail.

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

Je n'aime vraiment pas ça :x. Si il y a une autre solution que celle-ci, alors s'il vous plaît laissez-moi savoir sinon je vais accepter l' slice solution tout de suite.

35voto

Andy E Points 132925

OMI, slice est plus approprié que substring ou replace . Essaye ça:

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

Ici, vous coupez la chaîne entre url( et ) . Voir MDC sur la tranche pour une description détaillée de la méthode.

7voto

Darin Dimitrov Points 528142

Vous devez extraire la partie url:

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

2voto

davydepauw Points 506

C'est parce que la chaîne url () est enroulée autour de celle-ci. Vous devrez le supprimer de la chaîne, par exemple en utilisant la fonction de remplacement ...

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X