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库冲突的完美解决办法
May 20 jQuery
jquery实现简单实用的轮播器
May 23 jQuery
React中jquery引用的实现方法
Sep 12 jQuery
javaScript和jQuery自动加载简单代码实现方法
Nov 24 jQuery
jQuery niceScroll滚动条错位问题的解决方法
Feb 03 jQuery
解决jQuery使用append添加的元素事件无效的问题
Aug 30 jQuery
jQuery实现适用于移动端的跑马灯抽奖特效示例
Jan 18 jQuery
jQuery创建折叠式菜单
Jun 15 jQuery
jQuery实现的记住帐号密码功能完整示例
Aug 03 jQuery
jQuery三组基本动画与自定义动画操作实例总结
May 09 jQuery
jQuery实现简单QQ聊天框
Aug 27 jQuery
jQuery-App输入框实现实时搜索
Nov 19 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
php5.2 Json不能正确处理中文、GB编码的解决方法
2014/03/28 PHP
php分页示例分享
2014/04/30 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
javascript数组去掉重复
2011/05/12 Javascript
网页前端优化之滚动延时加载图片示例
2013/07/13 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
创建你的第一个AngularJS应用的方法
2015/06/16 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
2016/08/03 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
第一个Vue插件从封装到发布
2017/11/22 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
微信小程序发布新版本时自动提示用户更新的方法
2019/06/07 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
python opencv人脸检测提取及保存方法
2018/08/03 Python
pycham查看程序执行的时间方法
2018/11/29 Python
Python3实现对列表按元组指定列进行排序的方法分析
2018/12/22 Python
Python文件读写常见用法总结
2019/02/22 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
解析python 类方法、对象方法、静态方法
2020/08/15 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
英国布鲁姆精品店:Bloom Boutique
2018/03/01 全球购物
班级心理活动总结
2014/07/04 职场文书
大学社团招新的通讯稿
2014/09/10 职场文书
工会文体活动总结
2015/05/07 职场文书
三八妇女节致辞
2015/07/31 职场文书
浅谈MySQL之浅入深出页原理
2021/06/23 MySQL