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 Json数据格式排版高亮插件json-viewer.js使用方法详解
Jun 12 jQuery
jQuery实现点击关注和取消功能
Jul 03 jQuery
jQuery plugin animsition使用小结
Sep 14 jQuery
jQuery实现火车票买票城市选择切换功能
Sep 15 jQuery
JQueryDOM之样式操作
Mar 27 jQuery
一文快速了解JQuery中的AJAX
May 31 jQuery
jquery实现掷骰子小游戏
Oct 24 jQuery
jQuery实现手风琴效果(蒙版)
Jan 11 jQuery
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
Feb 01 jQuery
jQuery操作选中select下拉框的值代码实例
Feb 07 jQuery
jquery+css3实现的经典弹出层效果示例
May 16 jQuery
jQuery实现简单轮播图效果
Dec 27 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中获取文件扩展名的N种方法小结
2012/02/27 PHP
php程序员应具有的7种能力小结
2014/11/27 PHP
PHP递归创建多级目录
2015/11/05 PHP
php文件系统处理方法小结
2016/05/23 PHP
php抽象方法和抽象类实例分析
2016/12/07 PHP
phpwind放自动注册方法
2006/12/02 Javascript
用javascript实现无刷新更新数据的详细步骤 asp
2006/12/26 Javascript
json 实例详细说明教程
2009/10/31 Javascript
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
2012/09/14 Javascript
js中split函数的使用方法说明
2013/12/26 Javascript
jsPDF生成pdf后在网页展示实例
2014/01/16 Javascript
JavaScript中的Web worker多线程API研究
2014/12/06 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
js实现淡入淡出轮播切换功能
2017/01/13 Javascript
JavaScript中的this陷阱的最全收集并整理(没有之一)
2017/02/21 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
vue动画效果实现方法示例
2019/03/18 Javascript
小程序云开发如何实现图片上传及发表文字
2019/05/17 Javascript
通过实践编写优雅的JavaScript代码
2019/05/30 Javascript
微信小程序文章列表功能完整实例
2020/06/03 Javascript
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
python绘制随机网络图形示例
2019/11/21 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
python+requests接口压力测试500次,查看响应时间的实例
2020/04/30 Python
使用Python将语音转换为文本的方法
2020/08/10 Python
Python 2.6.6升级到Python2.7.15的详细步骤
2020/12/14 Python
深入解读CSS3中transform变换模型的渲染
2016/05/27 HTML / CSS
canvas实现圆绘制的示例代码
2019/09/11 HTML / CSS
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
意大利值得信赖的在线超级药房:PillolaStore
2020/02/05 全球购物
Tomcat的缺省是多少,怎么修改
2014/04/09 面试题
领导干部培训感言
2014/01/23 职场文书
岗位廉洁从政承诺书
2014/03/27 职场文书
毕业生求职信
2014/06/10 职场文书
公共场所禁烟标语
2014/06/25 职场文书
中考百日冲刺决心书
2015/09/22 职场文书