关于jqeury无法获取动态添加元素的解决办法

当使用jQuery动态添加元素时,直接选择器无法操作这些元素。解决方法是采用事件委托,如使用on()绑定事件。注意on的参数只接受一个函数,而live(), delegate()和bind()则有所不同。在最新jQuery版本中,推荐使用on()处理事件绑定。" 17376397,1370067,ArcGIS Engine 10.2 发布地图服务指南,"['GIS', 'ArcGIS', '地图发布', '服务器管理']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

<ul>
	<li></li>
	<li></li>
</ul>

当li是通过jquery动态添加时,通过$(“ul li”)是无法对li进行操作的。原因是因为页面已经将JS加载完毕,此时新增请求动态添加节点,自然获取不到。

解决办法:

动态添加的标签要事件委托才能获取到节点
1.通过on绑定事件(注意使用on绑定事件时,hover无效,因为on的参数只能传一个函数)

语法:

$(selector).on( types, data, fn) 

例子:

$("ul").on("mouseenter","p",function(){
    $("ul li").click(function(){
		alert("1")
	})
})

注意:这里ul为非动态添加的节点,不然也获取不到。

除此之外还有其他的绑定方法:

live绑定:

$("ul").live("click",function(){
	alert("ok");
});

delegate绑定:

$("ul").delegate("a","click",function(){
	alert("ok");
})

bind绑定:

$("ul").bind("click",function(){
	alert("ok");
});

区别:
bind()的事件函数只能针对已经存在的元素进行事件的设置,是绑定在元素上的。live(),on(),delegate()均支持未来新添加元素的事件设置。
如果你开发使用的是最新版本的jQuery,完全可以使用on()方法来处理所有的事件绑定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值