2010-08-20 5 views
5

J'ai une fonction a.click() en cours dans jquery ... Mais si je clique sur une ancre, j'ouvre une nouvelle fenêtre ... Mais comment puis-je empêcher le navigateur d'ouvrir un nouvelle fenêtre elle-même ??jQuery - ancre cliquez sur

exemple:

$('a').each(function() { 
      $(this).click(function(e) { 
       if($(this).attr('target') == '_popup') { 
        //here is code to open window (already exists) 

        //try to stop propagation, but doesn't work... 
        e.stopPropagation(); 
       } 

       hideNSL(); 
      }); 
    }); 

, comment puis-je arrêter l'événement ??

Répondre

12

Essayez

e.preventDefault() 

mais ici return false peut aussi le faire qui est en l'autre réponse. preventDefault peut être utilisé dans plus senarios et est un « arrêter l'action d'événement par défaut » plus générique, voir: http://api.jquery.com/event.preventDefault/

+0

cela a fonctionné (PUT je ne peux pas accepter votre réponse ... je dois attendre -.-) – dododedodonl

4

Ajoutez ceci à la fin de votre événement click:

return false; 

Ainsi, par exemple:

$('a').each(function() { 
     $(this).click(function(e) { 
      var toReturn = true; 
      if($(this).attr('target') == '_popup') { 
       //here is code to open window (already exists) 

       toReturn = false; 
      } 

      hideNSL(); 
      return toReturn; 
     }); 
}); 
3

Vous pouvez essayer

e.preventDefault(); 
-1

EDIT, je reconnais mon erreur .preventDefault est pas une fonction jQuery.

+0

il n'a qu'à travailler en safari (il est un extention safari), et il fonctionne ... – dododedodonl

+0

Ce n'est pas une fonction jQuery. –

+1

Puisqu'il n'a pas été clarifié dans la question cela pourrait encore être utile pour d'autres utilisateurs qui hésitent sur la question ne pensez-vous pas? – jpluijmers

3
e.preventDefault();