2010-09-19 5 views
1

Im coincé sur certains jquery, et je ne sais pas pourquoi il nest pas travailler ...jQuery obtenir attr id d'une image active

$('img').click(function() { 
    $('img').removeClass('bob'); 
    $(this).addClass('bob'); 
}); 

var test = $('img.bob').attr('src'); 
$('div.button').click(function() { 
    alert(test); 
}); 

essentiellement j'ai besoin pour obtenir l'ID attr de l'image sélectionnée, mais le alert ne renvoie que 'null'.

Toutes les suggestions seraient grandement appréciées. Im tirant mes cheveux ...

A.

+0

pour commencer, vous voulez deviner '$ ('img.bob') attr ('id')' –

+1

fait: '$ ('div.button') cliquez sur (function() {alert ($ ('img.bob'). attr ('id'));}); 'travail? –

Répondre

1

Rappelez-vous que l'événement click que vous avez attribué ne fonctionne pas jusqu'à ce que vous cliquez en fait un <img>, afin d'essayer d'obtenir un image avec la classe .bob avant que des événements de clic se soient produits sur les éléments <img> résultera 0 éléments correspondants (à moins que vous ayez .bob affecté à l'un des éléments <img> avant le chargement de la page.)

Vous devez récupérer le 'id' à l'intérieur le gestionnaire de clic du bouton.

En outre, vous pouvez rendre votre code un peu plus efficace en mettant en cache les éléments <img> trouvés (tant que vous n'en ajoutez pas dynamiquement après le chargement de la page).

var $img = $('img').click(function() { 
    $img.not(this).removeClass('bob'); 
    $(this).addClass('bob'); 
}); 

$('div.button').click(function() { 
    var test = $img.filter('.bob').attr('id'); 
    alert(test); 
}); 

Si vous souhaitez ajouter dynamiquement des images, vous n'avez pas besoin de les mettre en cache. ..

$('img').click(function() { 
    $('img').not(this).removeClass('bob'); 
    $(this).addClass('bob'); 
}); 

$('div.button').click(function() { 
    var test = $('img.bob').attr('id'); 
    alert(test); 
}); 
0

essayez ceci:

$('div.button').click(function() { 
    alert(this.id.ToString()); 
});