jquery 给动态生成的标签绑定事件的几种方法总结


Posted in jQuery onFebruary 24, 2018

经常遇到给动态生成的标签绑定事件不好用,自己简单测试总结了下,结论如下了:

<body>
		<!-- 下面是用纯动态方式生成标签 -->
		<div id="d2">
			生成a标签
		</div>
		<div id="d3">
			<input type="button" value="生成a标签" id="btn" />
		</div>
	</body>
	<script>
		
		$(function(){
			$('#btn').bind('click', function(event) {
			 /* 在添加标签的同时给添加的标签绑定点击事件 */
			 $("<li>Hello</li>").appendTo("#d2");
 			});
 			
 			///bind方法对于动态添加的标签不好使,只对已经存在的静态标签好用
 			$('li').bind('click', function(event) {
			 alert("haha"); ///根本不会触发这个方法
 			});
		})
	</script>

点击按钮,就会在d2中添加一个li标签,这个可以。

但是,如果这样在初始化时,用bind方法给将来要动态生成的li标签绑定方法是无效的,点击生成的li标签,没有任何反应。

因为bind方法只能给在执行它时已经存在的静态标签jq对象绑定事件,对未来动态添加的标签是无效的。

这时,可以有几种方法来解决这个问题:

方法一:

<body>
		<!-- 下面是用纯动态方式生成标签 -->
		<div id="d2">
			动态生成a标签
		</div>
		
		<div id="d3">
			<input type="button" value="生成a标签" id="btn"/>
			
		</div>
	</body>
	<script>
		$(function() {
			///点击按钮,给d2动态添加标签
			$('#btn').bind('click', function() {
				/* 在添加标签的同时给添加的标签绑定点击事件 */
				$("<li onclick='show()'>Hello</li>").appendTo("#d2");
			});
	
		})
	
		function show() {
			alert($(this).text());///这样打印出的是空的,没有任何东西,但是方法是会触发的(不能这样打印自己)
			alert("哈哈");
		}
	</script>

这种方法是在动态拼接时就拼接好js原生的要触发的事件,然后把事件方法定义在script标签中。这种方法可以触发li的点击事件。但是如果要用alert($(this).text())这种打印标签自己本身信息的东西的方法,是没有任何结果显示的。这个即使是静态的标签打印自己也是不会有显示的。

要解决这个问题,可以用下面两种方法。

方法二:

<body>
		<!-- 下面是用纯动态方式生成标签 -->
		<div id="d2">
			生成a标签
		</div>
		
		<div id="d3">
			<input type="button" value="生成a标签" id="btn"/>
		</div>
	</body>
	<script>
		$(function(){
			$('#btn').bind('click', function(event) {
			 /* 在添加标签的同时给添加的标签绑定点击事件 */
			 $("<li>Hello</li>").appendTo("#d2").bind('click', function() {
			  /* 显示标签的内容 */
			  alert($(this).text()); ///这种方式也可以正常打印出 hello
			 });
 			});
 			
		})
	</script>

这种方式是可以解决上面问题的。虽然它用的也是bind方法,但是注意,它是先有目的标签对象然后才调用的bind方法,所以也是好用的。而且它居然可以正常打印自己的信息,非常厉害。

方法三:

<body>
		<!-- 下面是用纯动态方式生成标签 -->
		<div id="d1">
			测试静态标签的绑定方法
		</div>
		<br />
		
		<div id="d2">
			动态生成a标签的位置
		</div>
		<div id="d3">
			<input type="button" value="生成a标签" id="btn" />
		</div>
	</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>

这种就是用jq的非常好用的既可以动态也可以静态绑定现在或者未来各种标签的live方法。而且它最神奇的地方是也能 打印自己。我靠,太牛了。以后就用它了。

暂时还没发现这个live方法有什么弱点啊!

新手一枚,欢迎大神指正各种错误!

以上这篇jquery 给动态生成的标签绑定事件的几种方法总结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery使用正则验证15/18身份证的方法示例
Apr 27 jQuery
jQuery Tree Multiselect使用详解
May 02 jQuery
JQuery.dataTables表格插件添加跳转到指定页
Jun 09 jQuery
简单实现jQuery手风琴效果
Aug 18 jQuery
利用jQuery实现简单的拖曳效果实例代码
Oct 20 jQuery
jQuery实现的电子时钟效果完整示例
Apr 28 jQuery
关于jquery中attr()和prop()方法的区别
May 28 jQuery
jQuery实现的滑块滑动导航效果示例
Jun 04 jQuery
jquery ajax加载数据前台渲染方式 不用for遍历的方法
Aug 09 jQuery
jQuery实现表格隔行换色
Sep 01 jQuery
jquery获取input输入框中的值
Nov 13 jQuery
jquery实现抽奖功能
Oct 22 jQuery
jquery动态添加带有样式的HTML标签元素方法
Feb 24 #jQuery
jQuery动态添加li标签并添加属性和绑定事件方法
Feb 24 #jQuery
vue.js2.0点击获取自己的属性和jquery方法
Feb 23 #jQuery
实现jquery放大镜的两种方法
Feb 22 #jQuery
jQuery实现滚动到底部时自动加载更多的方法示例
Feb 18 #jQuery
jQuery实现鼠标响应式透明度渐变动画效果示例
Feb 13 #jQuery
jQuery实现鼠标响应式淘宝动画效果示例
Feb 13 #jQuery
You might like
php 数组的指针操作实现代码
2011/02/08 PHP
php实现分页显示
2015/11/03 PHP
extjs 为某个事件设置拦截器
2010/01/15 Javascript
jquery 插件开发备注
2010/08/27 Javascript
Jquery焦点图实例代码
2014/11/25 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
2015/06/11 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
javascript实现动态统计图开发实例
2015/11/21 Javascript
第四章之BootStrap表单与图片
2016/04/25 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
JS本地刷新返回上一页代码
2016/07/25 Javascript
js自定义QQ菜单效果
2017/01/10 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
详解webpack babel的配置
2018/01/09 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
基于js实现的图片拖拽排序源码实例
2020/11/04 Javascript
express异步函数异常捕获示例详解
2020/11/30 Javascript
Python按行读取文件的简单实现方法
2016/06/22 Python
Java分治归并排序算法实例详解
2017/12/12 Python
Python及Django框架生成二维码的方法分析
2018/01/31 Python
python实现一个简单的并查集的示例代码
2018/03/19 Python
Python检测网络延迟的代码
2018/05/15 Python
从0开始的Python学习016异常
2019/04/08 Python
解决Django layui {{}}冲突的问题
2019/08/29 Python
Python进程间通信multiprocess代码实例
2020/03/18 Python
Django多个app urls配置代码实例
2020/11/26 Python
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
2014年教师节演讲稿范文
2014/09/10 职场文书
群众路线教育查摆剖析材料
2014/10/10 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
《妈妈别哭,有我在》读后感3篇
2020/01/13 职场文书
Python各协议下socket黏包问题原理
2022/04/12 Python
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技