Heim > Web-Frontend > js-Tutorial > So binden Sie Ereignisse an dynamisch generierte Tags in JQuery

So binden Sie Ereignisse an dynamisch generierte Tags in JQuery

php中世界最好的语言
Freigeben: 2018-03-14 16:31:50
Original
1775 Leute haben es durchsucht

Dieses Mal bringe ich Ihnen jquerywie man Ereignisse an dynamisch generierte Tags bindet, und Hinweise darüber, wie jquery Ereignisse an dynamisch generierte Tags bindet. Was sind Sie? Hier sind tatsächliche Fälle.

Ich stoße oft auf die Schwierigkeit, Ereignisse an dynamisch generierte Tags zu binden. Ich habe es kurz getestet und zusammengefasst, und das Fazit lautet wie folgt:

	<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>
Nach dem Login kopieren

Klicken Sie auf die Schaltfläche und es wird hinzugefügt im d2 A li-Tag funktioniert das.

Wenn Sie jedoch die Bind-Methode verwenden, um das li-Tag zu binden, das in Zukunft während der Initialisierung dynamisch generiert wird, ist das Klicken auf das generierte li-Tag ungültig.

Da die Bindemethode Ereignisse nur an das statische Tag-JQ-Objekt binden kann, das bei ihrer Ausführung bereits vorhanden ist, ist sie für zukünftige dynamisch hinzugefügte Tags ungültig.

Derzeit gibt es mehrere Möglichkeiten, dieses Problem zu lösen:

Methode 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=&#39;show()&#39;>Hello</li>").appendTo("#d2");
			});
	
		})
	
		function show() {
			alert($(this).text());///这样打印出的是空的,没有任何东西,但是方法是会触发的(不能这样打印自己)
			alert("哈哈");
		}
	</script>
Nach dem Login kopieren

Dies Die erste Methode besteht darin, die nativen JS-Ereignisse zu spleißen, die während des dynamischen Spleißens ausgelöst werden sollen, und dann die Ereignismethode im Skript-Tag zu definieren. Diese Methode kann das Klickereignis von li auslösen. Wenn Sie jedoch Alert($(this).text()) verwenden möchten, das die eigenen Informationen des Etiketts druckt, werden keine Ergebnisse angezeigt. Auch wenn das Etikett statisch gedruckt wird, wird es nicht angezeigt.

Um dieses Problem zu lösen, können Sie die folgenden zwei Methoden verwenden.

Methode 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>
Nach dem Login kopieren

Diese Methode kann das oben genannte Problem lösen. Obwohl es auch die Bind-Methode verwendet, beachten Sie bitte, dass es zuerst das Ziel-Tag-Objekt hat und dann die Bind-Methode aufruft, damit es einfach zu verwenden ist. Und es kann seine eigenen Informationen tatsächlich normal ausdrucken, was erstaunlich ist.

Methode 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>
Nach dem Login kopieren

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie hier. Bitte achten Sie auf andere chinesische PHP-Websites. Verwandte Artikel!

Empfohlene Lektüre:

Wie jQuery einen Animationseffekt erzeugen kann, der springt, wenn er den Rand des Frames erreicht

jQuerys isPlainObject So verwenden Sie die ()-Methode

Das obige ist der detaillierte Inhalt vonSo binden Sie Ereignisse an dynamisch generierte Tags in JQuery. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage