2009-09-27 3 views
2

Dans jquery, j'ai besoin de retarder le comportement par défaut des ancres, de sorte qu'entre temps, la requête ajax post puisse se compléter.comment retarder l'action par défaut?

preventDefault ou de retourner false dans l'événement .click ne le font pas, car j'ai encore besoin de naviguer vers ces pages. window.location = href échoue évidemment parce que certaines ancres n'ont pas d'attribut href à la place utilise javascript. Je ne contrôle pas ces pages.

Répondre

0

Si certaines ancres n'ont pas href, je suppose que vous ne serez pas en mesure de changer leur comportement. Pour le reste, il suffit d'utiliser un timeout sur l'événement click et d'obtenir href afin de rediriger après la fin du timeout, en utilisant sa fonction de callback.

+0

si cela est impossible? –

+0

si les "autres" ancres utilisent javascript pour rediriger, et vous n'avez pas de contrôle dessus, oui. – yoda

2

Vous utilisez simplement le « succès » dans le rappel ajax function for jQuery se

$.ajax({ 
    type: "POST", 
    url: "some.php", 
    data: "name=John&location=Boston", 
    success: function(msg){ 
    // do what you need to here 

    return true; 
    } 
}); 

Ensuite, il attendra jusqu'à ce que l'Ajax a terminé avant de passer à la fonction de rappel de succès

+0

oui mais je parle de liens qui n'ont pas l'emplacement href url. il n'est pas possible de rediriger dans le rappel de succès. –

+1

vous juste vérifiez dans le rappel de succès s'il y a un href défini ou non, s'il y a ** pas ** alors vous renvoyez false. Si c'est le cas, retournez vrai. – jakeisonline