11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour tout le monde !

Alors voilà, je suis en train de créer un affinage de catalogue pour la boite dans laquelle je travail et notamment pour mes études (je suis actuellement en alternance). J'ai donc été chercher puis modifier à ma façon un petit script JQuerry me permettant de changer une image en une autre lorsque l'on clique dessus :


<a href="#"><img class="expanded" id="monImage" src="img/contract.jpg"/></a>


	$('#monImage').on({'click': function() {
		var src = ($(this).attr('src') === 'img/contract.jpg')
		? 'img/expand.jpg'
		: 'img/contract.jpg';
		$(this).attr('src', src);
		}
		})


Le problème est que seul l'ID de ma première image est récupérée et du coup, ce script ne fonctionne uniquement que sur une image Smiley biggol . J'ai penser à ajouter plusieurs arguments afin de compléter les ID manquants comme ça :

$('#monImage', '#monImage1', '#monImage2').on({'click': function() 


J'ai de même essayer avec des + mais rien n'y fait. Je vous conseil d'allez voir par vous même, vous remarquerez que seul le premier [-] fonctionne sur le premier filtre : www.arnaud-benez.net/affinage/affinage.html

En espérant avoir été assez clair Smiley rolleyes

Merci d'avance,

Cordialement
Hello,

Ça ne fonctionne pas car toutes les images ont le même id.

Bon après-midi !
Bonjour et merci de ta réponse ! Smiley smile

J'avais déjà essayé en donnant un ID différent à toutes mes images mais le problème reste le même ou presque puisque lorsque je rajoute les autres arguments, le script n'est plus fonctionnel du tout. La première image ne fonctionne plus elle aussi.

Avec 1 argument : http://www.arnaud-benez.net/affinage/affinage2.html
Avec plusieurs arguments : http://www.arnaud-benez.net/affinage/affinage.html

Merci encore Smiley ravi
Modifié par Mister-Hims (22 Aug 2014 - 15:19)
salut,
déjà il y a pas d'erreurs dans ton HTML, pense à valider ton code et puis surtout, utiliser des images pour ça ? Franchement tu peux le faire en CSS tout court ou bien passer par des font icons ou au minimum, utiliser un sprite.
Si non est-ce que tu as essayé d'ajouter l'écoute d'évènement en passant par un sélecteur de classe ?
Bonjour et merci !

C'est vrai que les fonts icons ça me semble être une super idée, mais oui je pensais faire un sprite à la base mais pour le moment je ne m'attarde pas trop dessus, je réserve ceci pour la finalisation. Je n'ai pas encore essayé avec un écouteur d’événement, je suis un peu une quiche en JS (d'ailleurs, je prévoit de me payer une formation car c'est vraiment indispensable à l'heure actuelle). Donc je vais essayer de me débrouiller comme je peu avec un ecouteur, si tu peux par ailleurs m'éclairer un peu de même, ça ne serait pas de refus !

Cordialement,
Modifié par Mister-Hims (25 Aug 2014 - 12:57)
Euh... Le problème viendrait pas plutôt de la manière d'écrire le "on" et tout ce qui va après ?

Et sinon, tu peux très bien ajouter une classe à tes images au lieu d'une id commun (ça sert à ça les classes) et ça marche très bien.

Un petit exemple :
Le code sert à rien, mais en gros : si tu cliques sur un avatar, il remet tous les avatars visibles et efface celui sur lequel tu as cliqué. Si tu cliques sur un smiley, il efface le smiley et remet tous les avatars.

http://codepen.io/anon/pen/burFa
Salut,
Ce que Oken voulait dire c'est qu' il ne peut pas y avoir deux éléments avec le même id.
D'ailleurs ça te fait une erreur quand tu le passes au validateur W3C

Dans ton cas précis, tu cibles l’élément $('#monImage) => Id donc unique.
Jquery va prendre le dernier élément avec cet id qu'il trouve.

Voici un script qui devrait fonctionner :
=> On a une multitude de choix pour cibler les images, en ciblant à partir du parent, en ciblant une classe .... Pour l'exemple, on va faire avec la class : expanded

$('.expanded').click(function() {
	var src = ($(this).attr('src') === 'img/contract.jpg')? 'img/expand.jpg': 'img/contract.jpg';
	$(this).attr('src', src);
});


Mais tu as des meilleurs manières de faire que ça.

- Regarde les police d’icônes :
http://mosaika.fr/ajouter-police-icones-webfont-wordpress-fontawesome/#.U_sgk2Mj4pE
http://www.alsacreations.com/tuto/lire/1547-police-font-icone-vectorielle-webdesign.html

- En changeant la class au click ( .normal , .expanded, par exemple).

J’espère que c'est clair, si tu as des questions hésite pas.

++++
Magnifique, c'est donc ça, on ne peux donc cibler plus d'une ID en Java ? Un professeur m'avait pourtant expliquer que les class étaient pour la .css et les ID pour le code et j'ai donc suivi son conseil ... normal.

Je vais maintenant voir pour créer une police d’icône en suivant les tutos et une fois terminée, je ferai un grand nettoyage de mon code puis j'le repasserai au validateur W3C. Merci encore, vous êtes tous superbes ! Smiley loveletter

PS : Si vous souhaitez voir mon travail actuel : http://www.arnaud-benez.net/affinage/affinage_updated.html
Modifié par Mister-Hims (26 Aug 2014 - 13:04)
Désole pour le double-post mais c'est afin de ne pas se mélanger les pinceaux. Alors voilà, j'ai correctement effectuer le tuto énoncé plus haut afin d'obtenir des fonts-icons à la place d'une simple image mais du coup, je me retrouve coincé dans ma script actuel.

En effet, mon script se servait d'image et je dois donc remplacer les images par ces fameuses fonts-icons. Hors ma question est : comment ?

Merci encore =)

Rappel de mon code JS actuel :


	<!-- Scripts JQuerry -->
<script type="text/javascript">
        $('.expanded').click(function() {
	var src = ($(this).attr('src') === 'img/contract.jpg')? 'img/expand.jpg': 'img/contract.jpg';
	$(this).attr('src', src);
        });
</script>


PS : Je vais essayer de faire en sorte que le script change maintenant les class comme cités plus haut. Je suis un peu une quiche mais je vais essayer de trouver comment m'y prendre Smiley smile
Modifié par Mister-Hims (26 Aug 2014 - 15:14)
Bonjour et merci de ta participation Smiley langue

J'ai réussi à me concocter un petit code avec l'attribut ToggleClass que tu m'a envoyé et y'a pas à dire, ça fonctionne du tonnerre !

Mon problème est presque résolu, manque un seul petit détail :
Le fait d'avoir ajouter la font-icon, le curseur http://upload.wikimedia.org/wikipedia/commons/0/06/Cursor_Hand.png n'apparait plus, le curseur texte l'a remplacé. Connaissez vous un moyen d'y remédier ?

Merci Smiley smile

Rappel du lien en question : http://www.arnaud-benez.net/affinage/affinage_updated.html
Modifié par Mister-Hims (26 Aug 2014 - 16:10)
Ah ba niquel dans ce cas, j'avais déjà vu ça quelque part mais je ne m'étais pas demandé son utilité.

Merci beaucoup à vous tous Smiley smile