Récemment, j'ai utilisé Jquery lorsque je travaillais sur un projet. J'ai rencontré des problèmes "étranges" (maîtres, ne me blâmez pas).
Merci à M. ClassYuan pour son soutien au blog de ClassYuan http://www.classyuan.com/.
1. Lors du chargement d'un événement avec un élément HTML, l'événement sera exécuté en même temps que le chargement.
Code d'erreur :
voir la source
PRint?1 $("#btnLoad").bind("click",GetProduct());
code correct
voir la source
print?1 $("#btnLoad").bind("click", function() { GetProduct() });
Dans ce code, j'ai ignoré la méthode Bind. L'explication de l'API est bind(type,[data],fn)
J'ai considéré à tort fn comme une fonction simple. Par conséquent, ce code exécutera le fn une fois lors du chargement.
Il s'agit d'un oubli de format écrit. J'espère que quelqu'un qui connaît la raison pourra me donner quelques conseils.
2. Le problème de la portée des variables. (Il semble que ce ne soit pas un problème de jquery. C'est la différence entre js et .net..)
voir la source
imprimer?1 fonction texte() {
2 pour (var je = 0; je < 3; i++) {
3 $("<a>Supprimer</a>").attr({ id : "hr_" + i, href : "javascript:;" }).addClass("btnCSS").bind("click", function () { tes(i) }).appendTo(".div_list");
4}
5}
6 fonctions tes(id) {
7 alerte (identifiant);
8}
Cette fonction. Je veux qu'elle alerte l'identifiant correspondant. Le résultat est que la réponse est très agréable. C'est une fonction avec 3 balises <a>. Quand elle apparaît, c'est toujours 3.
Après l'avoir regardé... je comprends
Concernant le problème de la portée des variables, le paramètre passé à la fonction tes est la valeur de i après la fin de la boucle, donc tous valent 3.
Cela semble être différent de .net.
Enfin, la solution - -.. Passez simplement $(this) dans
3. Problèmes liés à l'ordre d'exécution des événements
voir la source
imprimer?1 <a target="_blank" title="Iphone" >
2 <img id="proImg7_2" src="" alt="Iphone" style="width:70px; height:60px; border:none;" />
3 </a>
L'événement onclick est lié à cette image. Le contenu de l'événement est d'ajouter un attribut href au parent de la balise <img>.
Mais une fois l’événement exécuté, il passera directement au lien de la balise a. Après analyse.
Il faut que le clic soit exécuté avant le href, c'est-à-dire que lorsque l'on clique sur l'image, la balise A a déjà le href, puis la balise A est déclenchée en même temps.
Solution.. Supprimez la balise a externe de <img>.. Puis modifiez l'événement
voir la source
print?1 idwrap(' <a href=" http://www.QQ.com"></a>' );
Ce qui précède sont les problèmes que moi, novice, j'ai rencontrés lors de la première utilisation de jquery. Je vais les laisser ici et les traiter comme un processus de croissance. Chers vétérans, ne vous plaignez pas.