2009-02-11 7 views
2

J'ai une boîte de divs (price_item) avec plusieurs divs enfants (date, prix, etc.). Je l'utilise comme un caroussel pour montrer les prix. Si vous cliquez sur un enfant, la couleur de fond du parent doit être changée en rouge. Je l'ai écrit comme:Erreur JQuery event.target

$(...selectquery...).click(function() { 
    var $tgt = $(event.target); 
    $tgt.parent().css("backgroundColor", "red"); 
}); 

sur Chrome, event.target fonctionne comme prévu, Firefox 3.0.1, il dit « événement n'est pas défini ». Comment puis-je contourner cela?

J'ai essayé ce qui suit:

$(this).parent().css() 

il dit 'object is not a function'

merci!

Répondre

8

L'objet event est transmis dans votre gestionnaire de clic par jQuery, vous devez spécifier comme paramètre.

Vous pouvez également être en mesure d'ajouter le gestionnaire de clic pour l'objet parent et utiliser « $ (this) » au lieu de event.target:

$(...select the parent...).click(function() { 
    $(this).css("backgroundColor", "red"); 
}); 

Si l'utilisateur clique sur le parent ou l'un de ses enfants, il appellera votre gestionnaire de clic. Si vous devez seulement changer l'arrière-plan s'ils cliquent réellement sur l'un des enfants (pas entre eux, par exemple) ceci ne fonctionnera pas.

0
$(...selectquery...). .click(function(event) { var $tgt = $(event.target); 

$(this).parent().css("...") should work as well 
1

Si vous voulez faire quoi que ce soit avec les événements, assurez-vous passer l'événement comme argument à la fonction de traitement:

$('#foo').click(function(event) { 
    // ... 
}); 

Mais ditto ce que l'affiche a dit plus tôt, vous devriez être en mesure d'utiliser seulement $ (ceci) pour obtenir ce que vous voulez.