[JQUERY-AJAX-JST] 动态渲染的页面事件无法绑定问题的解决方案

在使用JST动态渲染的页面上,由于DOM元素是在页面加载后生成的,导致在jQuery的$(document).ready()中绑定的事件无法生效。问题在于ready事件在动态内容渲染之前已完成。解决方案是在内容渲染完成后,手动调用事件绑定函数,例如在本例中,通过processUploadBox()函数在渲染后绑定表单提交事件,从而确保事件能够正确绑定并触发。

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

一个页面是使用JST动态进行渲染的,其中有一段代码是用于图片上传,如下:

上传商品照片(最多5张)
                <form id="form1" name="form1" lang="zh-cn" action="upload" method="POST" enctype="multipart/form-data">
                    <input type="file" size="38" id="upload1" name="upload1">
                    <button type="submit">上传</button>
                </form>
                <img id="uppic1" name="uppic1" src=""/>
                <button id="upbtn1" name="upbtn1" οnclick="canclePic()">撤销</button>

 

我们采用JQUERY异步提交的方式,为了不刷新页面而上传图片,所以我们使用如下的代码来绑定一个异步请求事件:

 

我们把上述代码放在了$j(document).ready()中。

但是发生的问题是,页面渲染完了点击提交按钮,根本不会有绑定事件的发生,这是为什么?

是因为这张页面我们采用的是动态渲染的方式,在页面一打开,这个ready中的操作已经执行完成,而后续我们再渲染这张页面,则已经在事件绑定操作之后了,由于我们的JST模板是存放在一个textarea中的,所以在执行渲染之前,是无法获取表单并绑定的。这就是动态渲染的页面事件无法绑定的根本原因。

解决方案也很简单,错可时间差,就是渲染完了之后再执行绑定:

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值