如何让动态创建的页面元素响应用户事件 (HTML/javascript/jQuery/Ajax/DOM)

平时很少涉及有关 Web 的项目,这次运气好被指派了一个 (@_@);;;

这个项目用到了 DOM、Ajax、jQuery 等方面的技术,还好有点基础,搞搞弄弄也就开始手顺了,其间遇到一个小问题:利用 Ajax 或 DOM 动态创建的一个或多个对象不再响应当初定义的用户事件。

例如:

页面中包含多个 a 元素,其 href 都包含前导字符 # ,利用 jQuery 定义了 click 事件的处理函数,工作正常。

 

可运行时通过动态创建的 a 元素,则不再响应上面定义的用户事件了。

到网上搜了搜,在
jQuery API Documentation (英文)
jQuery API 中文文档 (WEB前端开发)
中找到了关于该问题的说明。

产生该问题的原因,是由于页面生成时注册的事件处理函数仅对注册时存在的元素产生影响,而动态创建的则被忽略了。

那么,如何让动态创建的对象也能响应用户事件呢? 这里有一个比较简单的方法,即使用 live() on() 函数:

现在问题解决啦 (^___^)

当然,还有其他的方式,例如通过 bind() 函数解决该问题,但需要注意的是:

jQuery 在不同版本中对事件的绑定处理是不一样的,jQuery 1.4.2 将会对同一元素上多次绑定的相同事件执行多次,不会像早期版本中那样,对相同事件进行过滤处理。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值