Javascript没有';你不能在ajax生成的代码上工作吗?
我用它来上传文件。该插件使用隐藏的iframe 上传而不刷新页面。一切正常,除了javascript不能在上运行 生成的代码。这是我的密码:Javascript没有';你不能在ajax生成的代码上工作吗?,javascript,jquery,ajax,iframe,file-upload,Javascript,Jquery,Ajax,Iframe,File Upload,我用它来上传文件。该插件使用隐藏的iframe 上传而不刷新页面。一切正常,除了javascript不能在上运行 生成的代码。这是我的密码: <form id="image_form" action="" method="post" enctype="multipart/form-data"> <input type="file" id="ima
<form id="image_form" action="" method="post" enctype="multipart/form-data">
<input type="file" id="image_file" name="image_file"><br>
<input type="submit" value="upload">
</form>
<div id="avatar_wrapper">
</div>
奇怪的是,click函数对这些生成的代码不起作用。
有人能帮我吗?谢谢。您必须在这些动态生成的元素上使用
$('.choose_avatar').live("click", function() { /* Just for test */
alert('hello');
});
您必须使用
live()
,或者手动执行,在常量的父元素上放置单击
处理程序,并检查事件.目标
以查看单击了哪一个
无论如何,这就是live
在引擎盖下的工作方式,所以请坚持下去:)
请注意,如果您使用的是较新的jQuery,则在容器avatar\u包装上使用
on()
而不是live()
,您必须绑定一个live/delegate侦听器:
$('#avatar_wrapper').delegate('.choose_avatar','click',function() {
alert('hello');
});
希望有帮助 当您执行$('.choose_avatar')
时,您正在使用类choose_avatar
(尚不存在)选择元素并附加事件处理程序。如果元素是动态加载的,这显然不起作用。更正确的方法是在包装器div上处理委托事件,如下所示:
$('#avatar_wrapper').delegate('img.choose_avatar', 'click', function (e) {
// do stuff
});
$('.choose_avatar').live("click", function() { /* Just for test */
alert('hello');
});
$('#avatar_wrapper').delegate('.choose_avatar','click',function() {
alert('hello');
});
$('#avatar_wrapper').delegate('img.choose_avatar', 'click', function (e) {
// do stuff
});