2010-10-30 6 views
1

J'essaie de créer un simple gestionnaire de boutons pour sélectionner et éventuellement désélectionner tous les éléments déjà vérifiés img qui contient la classe CSS .my_class, pourquoi cela ne fonctionne pas?jQuery: Vérifiez si un élément est affecté à un var

var last_selected; 
$("img.my_class").click (function() { 
    if (last_selected != null) alert ($(this) == last_selected); // returns false everytime 
    last_selected = $(this); 
}); 

Répondre

0

Chaque fois que vous enveloppez this vous créez un nouvel objet jQuery. Deux objets jQuery ne sont pas égaux juste parce qu'ils enveloppent le même élément ($(this) != $(this)).

Au lieu de cela, affectez this lui-même à last_selected et tout devrait fonctionner comme prévu.

var last_selected; 
$("img.my_class").click (function() { 
    if (last_selected != null) alert (this == last_selected); 
    last_selected = this; 
}); 
+0

devrait probablement utiliser '===' dans la comparaison. – Pointy

+0

Cela fonctionne, merci pour l'aide – vitto

+0

Pourriez-vous me donner un coup de main ici: http://stackoverflow.com/questions/4532009/placing-error-message-for-a-checkbox-array ?? – eddy

1

Il ne fonctionne pas parce que chaque fois que vous appelez $(this) un nouvel objet est créé wrapper jQuery.

Au lieu de cela, essayez d'enregistrer juste « ce »:

var last_selected; 
$("img.my_class").click (function() { 
    if (last_selected != null) alert (this === last_selected); 
    last_selected = this; 
}); 
1

pourquoi ne pas affecter une classe « sélectionnée » à l'img sélectionné?

$('img.my_class').click(function() 
{ 
    // remove the selected class from the previous selected 
    $('img.my_class.selected').removeClass('selected'); 
    // flag the current one as selected 
    $(this).addClass('selected'); 
}); 
Questions connexes