2010-09-11 11 views
0

J'ai un lien d'ancrage à l'intérieur d'un div. Je voudrais que le lien d'ancrage et div traitent les événements onclick séparément, mais pour le moment cliquer sur le lien d'ancrage déclenche aussi l'événement onclick pour la div. Comment puis-je empêcher cela?jquery sépare les événements onclick des éléments encapsulés

Voici le code:

 
<html> 
    <head> 
    <style> 
    #box { 
      background-color: #ccffcc; 
      width: 400px; 
      height: 200px; 
    } 
    </style> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"> 
    </script> 
    <script type="text/javascript"> 
      $(document).ready(function() { 
       $("#mailto").click(function(event) { 
        // correctly opens an email client if clicked 
        $("a[@href^='http']").attr('target','_blank'); 
        return(false); 
       }); 

       $("#box").click(function() { 
        // always goes to the home page, even if the #mailto id is clicked 
        window.location = '/index.php'; 
       }); 
      }); 
    </script> 
    </head> 
    <body> 
    <div id="box"> 
      <a href="mailto:[email protected]" id="mailto">[email protected] 
    </div> 
    </body> 
</html> 

est-il un moyen pour moi d'arrêter l'exécution du code après le mailto est chargé?

Merci!

John

Répondre

0

vous devez vous assurer que votre code html est valide, donc terminer la balise off:

<a href="mailto:[email protected]" id="mailto">[email protected]<a/> 

et si cela provoque toujours des problèmes essayer.

$("#mailto").click(function(event) 
{ 
    event.stopPropagation(); 
    if(event.srcElement == 'HTMLAnchorElement') 
    { 
     //Process 
    } 
}); 
+0

Brillant. Merci, Robert –

0

L'événement bouillonne l'arbre DOM, e.stopPropagation(); arrêtera cela.

$("#mailto").click(function(event) { 
    event.stopPropagation(); 
    // correctly opens an email client if clicked 
    $("a[@href^='http']").attr('target', '_blank'); 
    return (false); 
}); 

$("#box").click(function() { 
    // always goes to the home page, even if the #mailto id is clicked 
    window.location = '/index.php'; 
});​ 

Fiddlehttp://jsfiddle.net/uwJXK/
A propos stopPropagation()http://api.jquery.com/event.stopPropagation/

0

Il pourrait être dû à votre point d'ancrage n'a pas été fermée correctement. Ou il ne sera certainement pas aider