jQuery动态生成的元素如何绑定事件

 这段时间在写代码的时候遇到一个问题,通过append()添加的节点,点击事件不起作用。当时我百思不得其解,各种找错都没找到错误的原因。后来才发现是动态生成节点的问题,还是自己没有经验啊。

  下面来总结一下这个问题的始末,温故而知新。

 先看下click绑定事件的效果。

	<div>
		<p>a</p>
		<p>b</p>
		<p>c</p>
	</div>

 创建一个按钮来生成新的节点p

	<button>create</button>

 绑定点击事件

	<script>
		//添加点击事件
		$("p").click(function(){
			$(this).text('click');
		})
		
		//创建一个新节点
		$("button").click(function(){
			var p ="<p>new</p>";
			$("div").append(p);
		})
	</script>

 点击第一p元素,事件生效,运行结果:

在这里插入图片描述

 点击按钮,生成新的节点,并点击新的节点,运行结果:

在这里插入图片描述

 结果证明,click并没有绑定到新的节点上。

 如果需要给动态的元素绑定事件,需要使用到on()。

	$("div").on("click","p",function(){
		$(this).text('click');
	})

 on()方法,可以给未来的元素绑定事件

 使用方法:
  1、先选中动态生成元素的父元素
  2、然后绑定事件
  3、再选中子类

 可以理解为给div下的p元素包括未来的p元素绑定click事件,这是比较通俗易懂的理解,详细内容可以看文档的具体说明

  • 12
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值