Ci-dessous, je partagerai avec vous un résumé de plusieurs méthodes de liaison d'événements à des balises générées dynamiquement à l'aide de jquery. Il a une bonne valeur de référence et j'espère qu'il sera utile à tout le monde.
Je rencontre souvent la difficulté de lier des événements à des balises générées dynamiquement. Je l'ai brièvement testé et résumé moi-même, et la conclusion est la suivante :
<body> <!-- 下面是用纯动态方式生成标签 --> <p id="d2"> 生成a标签 </p> <p id="d3"> <input type="button" value="生成a标签" id="btn" /> </p> </body> <script> $(function(){ $('#btn').bind('click', function(event) { /* 在添加标签的同时给添加的标签绑定点击事件 */ $("<li>Hello</li>").appendTo("#d2"); }); ///bind方法对于动态添加的标签不好使,只对已经存在的静态标签好用 $('li').bind('click', function(event) { alert("haha"); ///根本不会触发这个方法 }); }) </script>
<. 🎜>
Cliquez sur le bouton et une balise li sera ajoutée à d2. C'est OK. Cependant, si vous utilisez la méthode bind pour lier la balise li qui sera générée dynamiquement à l'avenir lors de l'initialisation, elle sera invalide. Cliquer sur la balise li générée ne provoquera aucune réaction. Étant donné que la méthode bind ne peut lier des événements qu'à l'objet jq de balise statique qui existe déjà lors de son exécution, elle n'est pas valide pour les futures balises ajoutées dynamiquement. À l'heure actuelle, il existe plusieurs façons de résoudre ce problème :Méthode 1 :
<body> <!-- 下面是用纯动态方式生成标签 --> <p id="d2"> 动态生成a标签 </p> <p id="d3"> <input type="button" value="生成a标签" id="btn"/> </p> </body> <script> $(function() { ///点击按钮,给d2动态添加标签 $('#btn').bind('click', function() { /* 在添加标签的同时给添加的标签绑定点击事件 */ $("<li onclick='show()'>Hello</li>").appendTo("#d2"); }); }) function show() { alert($(this).text());///这样打印出的是空的,没有任何东西,但是方法是会触发的(不能这样打印自己) alert("哈哈"); } </script>
Méthode 2 :
<body> <!-- 下面是用纯动态方式生成标签 --> <p id="d2"> 生成a标签 </p> <p id="d3"> <input type="button" value="生成a标签" id="btn"/> </p> </body> <script> $(function(){ $('#btn').bind('click', function(event) { /* 在添加标签的同时给添加的标签绑定点击事件 */ $("<li>Hello</li>").appendTo("#d2").bind('click', function() { /* 显示标签的内容 */ alert($(this).text()); ///这种方式也可以正常打印出 hello }); }); }) </script>
Méthode 3 :
<body> <!-- 下面是用纯动态方式生成标签 --> <p id="d1"> 测试静态标签的绑定方法 </p> <br /> <p id="d2"> 动态生成a标签的位置 </p> <p id="d3"> <input type="button" value="生成a标签" id="btn" /> </p> </body> <script> $(function(){ $('#btn').bind('click', function() { /* 在添加标签的同时给添加的标签绑定点击事件 */ $("<li>Hello</li>").appendTo("#d2"); }); ///bind方法对于动态添加的标签不好使,只对已经存在的静态标签好用 ///用live方法才好用 $('li').live('click', function() { alert($(this).text());///注意,用live还可以这样写,结果是正常的 alert("haha"); }); ///通过 live() 方法附加的事件处理程序适用于匹配选择器的当前及未来的元素(比如由脚本创建的新元素) $('#d1').live('click', function() {///对于静态和动态创建的标签都好使 alert($(this).text());///注意,用live还可以这样写,结果是正常的.这是非常重要的 alert("haha"); }); }) </script>
Comment utiliser le composant de boîte d'invite globale dans vue ?
Comment utiliser la recherche frontale dans vue2 ?
Comment transmettre la valeur du composant enfant au composant parent dans vue
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!