Je crée des éléments dynamiques en utilisant jquery et essayez de lier l'auditeur pour les éléments. En liant l'auditeur en utilisant
$('#div11').on('click',$('#textbox31'),function(e){showPopupImage(e);}); $('#div11').on('click',$('#textbox32'),function(e){alert('hi');});
, Elle ajoute l'auditeur aux descendants même si je spécifie le champ particulier à lier.
Pls, me suggère la bonne façon de gérer ma situation.
Le problème est que vous ne spécifiez pas les paramètres corrects à la fonction on. Si vous regardez la documentation JQuery, vous utilisez la surcharge de fonction suivante:
.on (événements [, sélecteur] [, données])
La partie que vous spécifiez de manière incorrecte est le paramètre du selector
. Ce paramètre nécessite une chaîne de sélection, pas un objet JQuery.
Ce qui suit fonctionnera:
$('#div11').on('click','#textbox31',function(e){showPopupImage(e);}); $('#div11').on('click','#textbox32',function(e){alert('hi');});
Remarquez que j'ai remplacé $('#textbox31')
par '#textbox31'
.
Voici un exemple de travail , vous verrez que l'événement de clic n'est pas appliqué à textbox33
et à la zone de textbox34
Essayez:
$('#div11').on('click', '#textbox31',function(e){ showPopupImage(e); }); $('#div11').on('click', '#textbox32', function(e) { //do something });
À l'aide de .on (), vous pouvez définir votre fonction une fois, et elle s'exécutera pour tous les éléments ajoutés dynamiquement.