jQuery désactiver un lien
Ce que quelqu'un sait comment désactiver un lien en jquery SANS l'aide de return false;
?
Plus précisément, ce que je suis en train de faire est de désactiver le lien d'un article, d'effectuer un clic sur l'aide de jquery qui déclenche quelques trucs, puis re-permettre à ce lien de sorte que si il est cliqué à nouveau, il travaille en tant que par défaut.
Grâce.
Dave
Mise à JOUR
Voici le code. Ce qu'il doit faire après la .expanded
classe a été appliqué est de ré-activer le lien désactivé.
$('ul li').click(function(e) {
e.preventDefault();
$('ul').addClass('expanded');
$('ul.expanded').fadeIn(300);
//return false;
});
- Pourquoi l'exigence de ne pas utiliser return false? Utiliser, et ensuite de supprimer le gestionnaire d'événement lorsqu'il ne s'applique plus (ou mettre un conditionnel dans le retour des valeurs différentes selon le statut de la "quelques trucs").
- Êtes-vous juste essayer de faire des pré-traitement avant que le lien est suivi sur le même cliquez sur l'action? c'est à dire que vous n'êtes pas en proposant deux clics, mais plutôt de l'utilisateur clique sur le lien, certaines actions se produisent, le lien est suivi?
- Sinon, pouvez-vous expliquer pourquoi vous prenez cette approche comme une meilleure compréhension de l'espace du problème permettra d'améliorer les réponses.
- Je propose 2 clics sur le même lien. 1 pour faire des trucs tout d'abord, puis la 2ème à traiter le lien comme un.
- Jusqu'à présent, j'ai essayé de retourner faux et il se poursuit jusqu'à la seconde partie de mon but, c'est à dire ne permettant pas à la 2e cliquez sur pour passer à travers. Si vous pourriez écrire un court exemple, je serais plus que reconnaissante.
- Dorward return false ne fonctionne que si il n'y a pas d'erreurs. Elle rend très difficile à déboguer lorsque le rechargement de la page avant que vous puissiez voir ce qui s'est passé.
- J'ai ce même problème, et la suppression de 'href' ne fonctionne pas bien pour moi dans mon cas parce que j'ai peut-être besoin de cette valeur. Donc, j'ai été d'examiner le positionnement d'un opacity:0 DIV sur le dessus de la lien hypertexte temporairement. L'un pour la mise en œuvre de la croix-plate-forme de l'opacité:0, cependant.
Vous devez vous connecter pour publier un commentaire.
Qui permettra d'éviter le comportement par défaut d'un lien hypertexte, qui est de visiter le spécifiée href.
De l'jQuery tutoriel:
Si vous voulez
preventDefault()
que si une certaine condition est remplie (quelque chose est caché par exemple), vous pouvez tester la visibilité de votre ul avec la classe élargi. S'il est visible (c'est à dire pas caché) le lien doit se déclencher comme normale, comme si l'instruction ne sera pas entré, et donc le comportement par défaut ne sera pas empêchée:Essayez ceci:
EDIT-
À partir de votre code mis à jour:
href="#"
Pour les autres qui sont venus ici via google comme moi, voici une autre approche:
Rappelez-vous: non seulement c'est une classe css
mais aussi, ces deux
de sorte que vous pouvez facilement ajouter et supprimer des classes avec jQuery. Pas besoin de toucher href...
J'aime jQuery! 😉
on()
filtrer tous lesa.disabled
liens et d'éviter les défaillances. Alors tout ce que vous avez à faire est de basculer les personnes handicapées classe on/off et le lien qui va gérer lui-même lorsque "activé".if(disabledCondition)
== true
. 🙂if ($(this).hasClass('disabled')) { e.preventDefault(); }
?Voici une autre css/jQuery solution que je préfère pour son laconisme et de minimiser le script:
css:
jQuery:
Vous pouvez supprimer cliquez sur lien par la suite;
Vous pouvez ré-activer le lien qui suit,
Vous ne pouvez pas utiliser "désactivé" la propriété pour les liens.
Si vous allez href route, vous pouvez l'enregistrer
Pour désactiver:
Puis de le ré-activer à l'aide de:
Dans un cas, j'ai eu à le faire de cette façon parce que les événements click étaient déjà liés ailleurs et je n'avais aucun contrôle sur elle.
Je l'utilise toujours en jQuery pour la désactivation des liens
Mes fav dans "passer à la caisse pour modifier un élément et prévenir -wild wild west clique n'importe où - tout en un "checkout" fonctions
Donc si je veux que tous les liens externes dans une deuxième action de la barre d'outils doit être désactivé en "edit mode", comme décrit ci-dessus, je vais l'ajouter dans la fonction éditer
Lien exemple après un incendie:
Et maintenant, vous POUVEZ utiliser des handicapés de la propriété pour les liens
Cheers!
lien html, exemple:
l'utiliser dans jQuery
ajouter à css :
pointer-events: none
propriété de l'ancrage des éléments ils reviennent à faire tout ce qu'ils faisaient auparavant, lorsque l'utilisateur clique dessus. Donc, si ils étaient de base, des liens hypertexte, ils reviennent à la navigation vers l'URL dans leurhref
attribut, et s'ils ont un gestionnaire d'événements click jeu, qui devient de nouveau actif. Beaucoup plus simple que de faire des économieshref
valeurs et des gestionnaires de clic.Vous devriez vous trouver réponse ici.
Merci @Will et @Matt pour cette solution élégante.
vous pouvez juste se cacher et de montrer le lien que vous le souhaitez
Simplement déclencher des choses, de définir certaines drapeau, retourne false. Si le drapeau est réglé de ne rien faire.
unbind()
a été dépréciée enjQuery 3
, utilisez leoff()
plutôt la méthode:Je sais que ce n'est pas avec jQuery mais vous pouvez le désactiver un lien avec quelques css simple:
le code HTML ressemblerait
Cela fonctionne pour les liens qui ont l'attribut onclick jeu en ligne. Cela permet également à la suite supprimer le "return false" pour l'activer.
Suffit d'utiliser
$("a").prop("disabled", true);
.Ce sera vraiment de désactiver élément de lien.
Doit être
prop("disabled", true)
. N'utilisez pas deattr("disabled", true)