Je veux afficher un dialogue JQuery conditionnellement à l'événement de clic d'un hyperlien.
J'ai une exigence telle que, à la condition 1, ouvrir un dialogue JQuery et, si la condition 1 n'est pas satisfaite, naviguer vers la page référencée par la balise 'href' dont l'événement de clic est en question.
Je suis capable d'appeler une fonction sur l'événement de clic du lien. Cette fonction vérifie maintenant la dite condition en exécutant une autre URL (qui exécute mon contrôleur Spring et renvoie la réponse).
Tout fonctionne parfaitement, seule la fonction window.open étant bloquée par le bloqueur de pop-ups.
$('a[href*=/viewpage?number]').live('click', function(e) {
e.preventDefault();
redirectionURL = this.href;
pageId= getUrlVars(redirectionURL)["number"];
$.getJSON("redirect/" + pageId, {}, function(status) {
if (status == null) {
alert("Error in verifying the status.");
} else if(!status) {
$("#agreement").dialog("open");
} else {
window.open(redirectionURL);
}
});
});
Si je retire e.preventDefault();
à partir du code, le bloqueur de popup ne bloque pas la page, mais pour la condition 1, il ouvre le dialogue ainsi que la page 'href'.
Si je résous l'un, cela crée un problème pour un autre. Je ne suis pas capable de rendre justice aux deux conditions simultanément.
Pouvez-vous m'aider à résoudre ce problème ?
Une fois ce problème résolu, j'ai un autre problème à résoudre, à savoir la navigation sur l'événement OK du dialogue :)
1 votes
Essayez de ne pas utiliser .live qui est déprécié et un pointeur vers .on() !
0 votes
@EvilP : Comme d'autres vous l'ont dit la dernière fois, seulement en 1.7 et plus. A lot des projets seront encore sur 1.5 ou 1.6.
10 votes
Downvoter : Ce n'est pas parce que vous n'aimez pas les fenêtres pop-up que cette question doit être déclassée. Une question doit être déclassée si elle "...ne montre aucun effort de recherche ; si n'est pas clair ou pas utile" . La question est claire, ne semble pas paresseuse et découle d'une combinaison non triviale de facteurs.
0 votes
@T.J.Crowder : Il n'a pas précisé quelle version il utilise. Je dois donc considérer qu'il utilise la dernière version. S'il utilisait une version différente, je suis sûr qu'il le mentionnerait car alors il serait conscient du fait que live est déprécié et expliquerait POURQUOI il utilise .live(). Personne ne m'a jamais dit la "dernière" fois, alors je pense que vous devriez faire une pause et vous calmer. Il n'y a pas besoin d'être si dur...
0 votes
Je n'ai pas reçu de notification à ce sujet. Mais n'est-il pas normal de considérer que si quelqu'un ne précise pas sa version, on peut considérer qu'il utilise la dernière version ? Je veux dire que je dois utiliser la 1.3 pour une raison et je suis conscient du fait qu'il existe une version plus récente et meilleure.
0 votes
@EvilP Merci de m'avoir fait découvrir une nouvelle méthode .on() et merci à T.J.Crowder d'avoir souligné que cela fait partie de la version 1.7+. J'en ai pris note et j'en tiendrai compte si je dois mettre à jour mon plugin JQuery à partir de la version 1.4.4 actuelle.