2010-10-04 6 views
1

J'ai une question ci-dessous est une liste avec les liens d'ancrage maintenant lorsque les liens sont cliqués Je ne veux pas le navigateur pour aller à cette page web, je veux que le navigateur reste sur la page actuelle et afficher le liste dans une boîte d'alerte à l'utilisateur. Je sais que cela peut être fait avec javascript peut-être avec l'événement onclick sur l'élément de la liste et afficher une boîte d'alerte, mais comment puis-je arrêter le navigateur pour aller cette page Web.javascript cliquez sur la question de l'événement

<ul id='list_o_links'> 
    <li><a href='http://www.google.com'>List Item1</a></li> 
    <li><a href='http://www.yahoo.com'>List Item2</a></li> 
    </ul> 

Répondre

1

Vous arrêtez le navigateur d'aller à la destination du lien en appelant event.preventDefault() ou retourner false dans le gestionnaire d'événements liés. Je pense que le premier est plus explicite:

var alert_instead_of_following_link = function (event) { 
    event.preventDefault(); 
    alert(this.href); 
}; 

$("#list_o_links a").bind("click", alert_instead_of_following_link); 
+0

Incidemment, peu importe que vous incluiez' preventDefault() 'comme première, dernière ou ligne médiane de la fonction. 'return false' doit être le dernier, puisqu'il arrête (revient de) la fonction. –

1
$("#list_o_links").children().click(function() { 
    var list = []; 

    $.map($("#list_o_links").children(), function (elem) { 
     list.push($(elem).text()); // take the text of each list item 
    }); 

    alert(list.join(', ')); 

    return false; // stop the browser from going to the link 
}); 

jsfiddle example

+0

Je trouve '.each()' est plus simple à utiliser lorsque cela est possible.. '$ ("Ul # de list_o_links") enfants() chaque (function() {liste .push ($ (this) .text());}); ' –