Maison > interface Web > js tutoriel > le corps du texte

Pourquoi l'événement lié par jquery à l'aide d'un clic n'est-il pas valide ?

黄舟
Libérer: 2017-06-27 10:14:24
original
2289 Les gens l'ont consulté

jqueryL'événement lié ​​par clic n'est pas valide

$(this).children(":last").prev().after("<div class=&#39;bounty-add&#39;><a target=&#39;_blank&#39; href=&#39;bounties.php#/p=add&XID=" + playerId + "&#39;>[Bounty]</a></div>"); 
$(this).children(":last").prev().after("<div class=&#39;info-add&#39;><a href=&#39;#&#39;>[Refresh]</a></div>");        
$("div.bounty-add").css(addStyle);
$("div.info-add").css(addStyle);
         
         
$(this).children(":last").prev().children("a").click(function() {
   alert("Hello");
});
Copier après la connexion

Le code de base pertinent est comme ci-dessus. L'élément Actualiser un élément peut être obtenu en douceur, mais il est lié L'événement click n'est pas valide et aucune liaison valide ne peut être trouvée dans les "Écouteurs d'événements" de "Elements" dans les "Outils de développement" de Chrome.
Le DOM ajouté par le code de base ci-dessus est entièrement valide. La couche externe est composée de deux chacune boucles, mais je pense que cela ne devrait avoir aucun impact. Tous les codes peuvent être exécutés en douceur, y compris l'étape de liaison. . Même si vous cliquez sur l'élément a une fois l'exécution terminée, cela ne fonctionnera pas et vous ne trouverez pas la fonction qui lui est liée. . . . . . .

$(this).children(":last").prev().children("a").on("click",function() {
   alert("Hello");
});
Copier après la connexion
Copier après la connexion

sur Je l'ai aussi essayé, mais ça n'a pas fonctionné Il semble que ces deux soient fondamentalement les mêmes ?
Parce que l'élément a lui-même possède l'attribut cliquable , après avoir cliqué, il répondra toujours à son événement d'origine, tel que href='#', et un # sera ajouté à la fin du barre d'adresse. . . . Je me demande si c'est parce que l'événement d'origine écrase l'événement ajouté ultérieurement ? . . . . .

Votre liaison précédente était

$(this).children(":last").prev().children("a").on("click",function() {
   alert("Hello");
});
Copier après la connexion
Copier après la connexion

identique à la liaison par clic normale
Essayez de lier comme ceci

$(this).on("click",".info-add a",function() {
   alert("Hello");
});
Copier après la connexion

votre élément est-il généré dynamiquement ?
Si c'est le cas, utilisez la liaison live ou délégué

Live jquery1.9 l'a supprimé. Maintenant, ce n'est pas que l'élément ne peut pas être trouvé ou ne peut pas être lié, mais qu'il est invalide après la liaison.
J'ai directement changé l'élément a en p, qui est également inclus dans les écouteurs de clic, mais le alter("hello"); . . . . .

Tout d'abord, utilisez firebug pour voir s'il y a des erreurs de script sur la page
Encore une fois, assurez-vous que votre code trouve l'élément a
Enfin. Vous pouvez utiliser

$(document).on("click",".info-add",function(){
alert("ok")
})
Copier après la connexion

Si cela ne fonctionne pas, merci de m'envoyer le code complet

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal