J'ai parcouru le forum à la recherche d'un problème particulier, mais toutes les solutions que j'ai trouvées ne fonctionnent pas pour mon problème.
J'ai une image sur le côté gauche. Sur le côté droit, j'ai des mots différents. Ainsi, lorsque je clique sur un nom particulier, je souhaite que l’image change en une image quelconque de mon dossier d’images. En gros, je veux que la source de l'image change. Voici le code de mon index:
<div id="picture_here">
<img src="images/mtkili.png" id="picture"/>
</div>
<div id="about">
<div id="mtl">Mtl</div>
</div>
<div id="about_2">
<div id="contact">SF</div>
</div>
et voici deux formules de jqueries que j'ai essayées:
$('#mtl').click(function(){
$('#picture').attr()({
'src':'images/short.png'
})
})
et:
$('#mtl').click(function(){
$('#picture').attr('src', 'images/short.png');
});
Votre deuxième tentative est correcte. Voici le jsFiddle qui fonctionne: http://jsfiddle.net/MEHhs/
Donc, le code devrait être:
html:
<div id="picture_here">
<img src="http://www.sbtjapan.com/img/FaceBook_img.jpg" id="picture"/>
</div>
<div id="about">
<div id="mtl">Mtl</div>
</div>
<div id="about_2">
<div id="contact">SF</div>
</div>
js:
$('#mtl').click(function(){
$('#picture').attr('src', 'http://profile.ak.fbcdn.net/hprofile-ak-ash3/41811_170099283015889_1174445894_q.jpg');
});
J'ai ajouté des images existantes trouvées sur Google.
mtl.png
et contact.png
et utilise:
<div>
<div class="button" id="mtl">Mtl</div>
</div>
<div>
<div class="button" id="contact">SF</div>
</div>
$('.button').click(function(){
var idToSRC = 'images/'+ this.id +'.png';
$('#picture').attr('src', idToSRC);
});
Bien que ce qui précède ne soit pas convivial, il y a une certaine latence dans le chargement de nouvelles images ...
Une meilleure approche consisterait à utiliser une seule image (ainsi appelée) Sprite, contenant toutes vos images souhaitées, à la définir comme image d'arrière-plan DIV et à changer la position de l'arrière-plan de cette DIV " sur clic!
Stockez la position gauche souhaitée dans un attribut de données:
<div id="picture"></div>
<div>
<div class="button" data-bgpos="68" id="mtl">Mtl</div>
</div>
<div>
<div class="button" data-bgpos="100" id="contact">SF</div>
</div>
CSS:
#picture{
width:25px;
height:25px;
background:url(/images/Sprite.png) no-repeat;
}
Récupérez ces données et déplacez le packgroundPosition:
$('.button').click(function(){
var bgpos = $(this).data('bgpos');
$('#picture').css({backgroundPosition: -bgpos+' 0'})
});
Au lieu d’ajouter des écouteurs d’événements à chaque classe de liens, vous pouvez simplement les utiliser comme fonction inline sur n’importe quel lien.
function changeurl(theurl){
$('.myimage').attr('src', theurl);
}
Tout semble bien pour la deuxième version. Assurez-vous de bien envelopper vos appels DOM dans la fonction de préparation du document, qui peut être écrite en tant que ...
$(document).ready(function() {
...
});
Ou...
$(function() {
...
});
Alors vous obtenez ...
$(function() {
$('#mtl').click(function(){
$('#picture').attr('src', 'images/short.png');
});
});
La seconde fonctionne bien mais vous devez utiliser un chemin explicite au lieu d'un chemin relatif:
$('#mtl').click(function(){
$('#picture').attr('src', '/images/short.png');
});