Quelqu'un sait-il comment désactiver un lien dans jquery SANS utiliser return false;
?
Plus précisément, ce que j'essaie de faire, c'est de désactiver le lien d'un élément, en effectuant un clic sur celui-ci à l'aide de jquery qui déclenche certaines choses, puis en réactivant ce lien de sorte que s'il est cliqué à nouveau, il fonctionne comme par défaut.
Merci. Dave
UPDATE Voici le code. Ce qu'il faut faire après le .expanded
a été appliquée est de réactiver la liaison désactivée.
$('ul li').click(function(e) {
e.preventDefault();
$('ul').addClass('expanded');
$('ul.expanded').fadeIn(300);
//return false;
});
7 votes
Pourquoi l'obligation de ne pas utiliser return false ? Utilisez-le, puis supprimez le gestionnaire d'événement lorsqu'il ne s'applique plus (ou ajoutez-y une condition pour renvoyer des valeurs différentes en fonction de l'état de l'élément mentionné).
0 votes
Essayez-vous simplement d'effectuer un prétraitement avant que le lien ne soit suivi sur la même action de clic ? c'est-à-dire que vous ne proposez pas deux clics mais plutôt que l'utilisateur clique sur le lien, que certaines actions se produisent et que le lien soit suivi ?
0 votes
Sinon, pouvez-vous expliquer pourquoi vous adoptez cette approche, car une meilleure compréhension de l'espace du problème améliorera les réponses.
0 votes
@lazarus, je propose 2 clics sur le même lien. 1 pour faire des trucs d'abord, puis le 2e pour traiter le lien comme un lien.
0 votes
@daviddorward, Jusqu'à présent, j'ai essayé return false et cela se poursuit jusqu'à la deuxième partie de mon objectif, c'est-à-dire ne pas permettre au deuxième clic de passer. Si vous pouviez écrire un court exemple, je vous en serais très reconnaissant.
0 votes
@David Dorward return false ne fonctionne que s'il n'y a pas d'erreur. Cela rend le débogage très difficile lorsque la page se recharge avant que vous puissiez voir ce qui s'est passé.
0 votes
J'ai le même problème, et la suppression de "href" ne fonctionne pas bien dans mon cas, car je peux avoir besoin de cette valeur. C'est pourquoi j'envisageais de placer temporairement un DIV opacité:0 au-dessus de l'hyperlien. Il faudrait toutefois mettre en œuvre une opacité:0 multiplateforme.