Maison >interface Web >js tutoriel >Pourquoi l'événement lié par jquery à l'aide d'un clic n'est-il pas valide ?

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

黄舟
黄舟original
2017-06-27 10:14:242305parcourir

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");
});

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");
});

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");
});

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

$(this).on("click",".info-add a",function() {
   alert("Hello");
});

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")
})

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!

Déclaration:
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