2011-02-01 4 views
4

J'ai le code HTML suivant:Comment changer le gestionnaire de clic de cette image?

<img src='img.png' onclick='document.write("Hi there!")' /> 

... et le code JavaScript suivant:

$(document).ready(function() { 

    // Change the click handler 
    $('img').click(function() { 

     alert("Hi there!"); 

    }); 

}); 

Ce que je me attends arriver est que le gestionnaire de clic pour l'image est remplacée et que cliquant dessus produira une boîte de dialogue d'alerte. Au lieu de cela, le contenu de la page change, comme dicté par le gestionnaire de clic dans le tag. Comment puis-je changer le gestionnaire de clic lors de l'exécution?

Note: Voici une démo interactive, vous pouvez jouer avec:
http://jsfiddle.net/ykmaG/

+0

+1, je n'y avais jamais pensé! – JCOC611

+0

+1 pour l'exemple fiddlable. – SLaks

Répondre

8

Vous devez supprimer le onclick d'origine:

$('img').removeAttr('onclick').click(function() { ... }); 
+0

Est-ce que l'événement est lié à l'élément quand le dom est chargé, si c'est le cas, alors le 'document.write' serait encore déclenché. – RobertPitt

+0

@Robert: Quoi? Il ne se déclenche que lorsque l'élément est cliqué. – SLaks

+0

** Parfait! ** Merci. Cela fonctionne bien maintenant. –

0

Je ne voudrais pas utiliser l'attribut onclick, au lieu restez avec jQuery cliquez sur().

Pour dissocier un événement, voir Unbind().

Cela aide-t-il du tout?

Questions connexes