Forums Développement Multimédia

Aller au contenu

jQuery récupérer SRC image cliqué

img src jquery this image CODE Ajax JQuery EaseJs

7 réponses à ce sujet

#1 XueFang

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 77 messages

Posté 12 November 2012 - 02:26 AM

:smile: Salut à tous,
Ma question est simple, la solution peut être moins.
Voilà depuis quelques heures j'essai de faire quelque chose qui me semble très simple et pourtant je reste sans réel solution.

Avec jQuery j'essai de récupérer le "src" d'une image cliqué.
A savoir que les images n'ont pas d'id ni de class car certaines seront ajouté depuis un espace d'administration par le client lui même et à savoir aussi que j'arrive à récupérer le src de la 1ère balise image contenu dans le DOM mais pas de celle cliqué.

J'ai bien évidement essaye toutes sortent de solution du type:



$( this ).attr("src");

$("img", this).attr("src");

$( this ).find('img').attr("src");

$( this ).children('img').attr("src");
 

J'ai également essayé cette méthode, de créer une class sur l'élément cliqué puis d'extraire le src de la class... de cette manière:



$(this).find('img').addClass("selected");
$('.selected').attr('src');

Avec ID



$("img", this).attr("id", "selected")
$("#selected").attr("src");

Rien y fait, le code ne sais que me renvoyer
Undefined, undefined, undefined, undefined, undefined,...

Seul

$("img").attr("src");

Me renvoi un url... mais pas celui que je veux du coup!

J'avoue arriver à cours d'idée et pour quelque chose d'aussi basique c'est très agassant de bloquer ainsi.

Merci de m'aider :smile:

#2 Badwolf

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 667 messages

Posté 12 November 2012 - 11:17 AM

Hello j'ai du mal a saisir ou est ton soucis ? tu veux le faire pour une image spécifique ou pour toutes tes images ?

si c'est une image spécifique tu dois passer par un ID ou une classe unique, si c'est pour toutes tes images tu fais un truc simple comme :

$('img').live('click', function(){
                  alert($(this).attr('src'));
                });

Haoooooooooooooooooooooooooooooooooooooooooooooou !!!

#3 XueFang

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 77 messages

Posté 12 November 2012 - 12:25 PM

Eh bah dis donc... tu as trouvé du premier coup! Je ne connaissais pas la fonction live, j'avoue je ne pas comprendre pourquoi sa ne fonctionnait pas avec ceci

$($target).bind('click', function() {

Merci bien! Sa me retire une nouvelle épine du pied!

#4 Badwolf

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 667 messages

Posté 12 November 2012 - 12:36 PM

J'ai mis live par sécurité ça permet de rendre actif la syntaxe même après l’exécution de la page, c'est a dire si tu rajoutes des images a la volée, le script fonctionnera pour ces nouvelles images.

le "bind" ne sert a rien dans le sens ou il a le même effet qu'un simple clic dans ce que tu écris.

Généralement on utilise bind pour "écouter" des évènements personnalisés.

pour résumer, imagines que tu as 10 images sur ta page, un simple clic ou un bind permet de gérer ces 10 images mais si tu as en plus un bouton qui affiche de nouvelles images, celles-ci ne seront pas gérées par la même commande que précédemment car elles étaient inconnues au moment de l’exécution de la page. C'est a cela que sert un "live", il rend actif le script pour tous les éléments concernés même ceux qui n'étaient pas présents dans ta page lors de l’exécution de celle-ci.

Après pour ton cas, je ne sais pas pourquoi le live fonctionne et pas un simple clic/bind car je ne connais pas ton code HTML.

Mais par sécurité je te conseille d'utiliser le plus souvent possible le "live" cela t'évitera des soucis.
Haoooooooooooooooooooooooooooooooooooooooooooooou !!!

#5 XueFang

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 77 messages

Posté 12 November 2012 - 22:29 PM

Eh bah dis donc, super utile ton astuce, merci! :mrgreen:

Par contre pour l'histoire du bind click, je l'utilise pour plus de souplesse par rapport à d'éventuelles évènements tel que la facilité d'écrire unbind click et ainsi désactiver facilement l'event.

#6 dcz.switcher

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 2532 messages

Posté 13 November 2012 - 19:22 PM

Salut,

De ce que j'en sais, live permet de poser un écouteur sur un élément ajouté dynamiquement, alors que bind fonctionne avec des éléments déjà présents dans la page.

Un point à noter, la méthode live est dépréciée

Citation

As of jQuery 1.7, the .live() method is deprecated.
source : http://api.jquery.com/live/

Il faut lui préférer la méthode on( )

Et puisque j'y suis, si tes images sont dans un même conteneur, il peut-être judicieux de poser un écouteur sur ce conteneur et non sur chaque image.

On retrouve avec JS les mêmes bonnes pratiques qu'en flash, à savoir minimiser les écouteurs, les supprimer (par off( ) pour le coup ), ne serait-ce que pour permettre leur suppression effective

Mais je chipote peut-être ;-)
"Ce que l'on conçoit bien s'énonce clairement et les mots pour le dire arrivent aisément"

embryon de site

#7 Badwolf

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 667 messages

Posté 14 November 2012 - 11:40 AM

Même si ce sont les mêmes pratiques que Flash (dans le concept en tout cas) l'interpréteur javascript et la VM Flash n'ont rien en commun et donc les bonnes pratiques de flash sont loins d’être toutes adaptables pour du JS.
Haoooooooooooooooooooooooooooooooooooooooooooooou !!!

#8 dcz.switcher

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 2532 messages

Posté 14 November 2012 - 15:38 PM

Citation

donc les bonnes pratiques de flash sont loins d’être toutes adaptables pour du JS
Je n'ai jamais dit le contraire
"Ce que l'on conçoit bien s'énonce clairement et les mots pour le dire arrivent aisément"

embryon de site



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP