追加了 JQuery 的代码不会在输入文件上触发单击事件
Code appended with JQuery does not fire click event on input file
我正在附加一小块代码,其中有一个图像,单击该图像时会在input
上触发click
事件以进行文件上传。加载和/或刷新页面时,只有一个块一旦更改,就会触发事件以附加一个新块。
<div class="add_new_image">
<div class="img">
<div class="file-upload-trigger">
<input type="file" name="imagem[]" class="none file-chooser" required/>
<img class="more" src="/assets/auto/images/add_image.png"/>
</div>
</div>
</div>
用于追加以下内容的 JQuery 代码:
$('#novo_anuncio .file-chooser').change(function() {
readURL(this);
$('#novo_anuncio .add_new_image').append(
'<div class="img">'n'
<div class="file-upload-trigger">'n'
<input type="file" name="imagem[]" class="none file-chooser" required/>'n'
<img class="more" src="/assets/auto/images/add_image.png"/>'n'
</div>'n'
</div>');
});
问题是附加的代码不会触发input
上的click
事件。代码是相同的,并且正确附加到.add_new_image
主标记中。可能出了什么问题?
您需要使用 .on()
,因为当您绑定"更改"侦听器时,新的".file-chooser"不存在。 jQuery on 为您处理所有这些。
委托事件的优点是它们可以处理来自 稍后添加到文档中的后代元素。
$('body').on('change', '#novo_anuncio .file-chooser', function() {
readURL(this);
$('#novo_anuncio .add_new_image').append(
'<div class="img">'n'
<div class="file-upload-trigger">'n'
<input type="file" name="imagem[]" class="none file-chooser" required/>'n'
<img class="more" src="/assets/auto/images/add_image.png"/>'n'
</div>'n'
</div>');
});
$('body').on('change', '#novo_anuncio .file-chooser', function() {
alert("change");
$('#novo_anuncio .add_new_image').append(
'<div class="img">'n'
<div class="file-upload-trigger">'n'
<input type="file" name="imagem[]" class="none file-chooser" required/>'n'
<img class="more" src="/assets/auto/images/add_image.png"/>'n'
</div>'n'
</div>');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="novo_anuncio">
<div class="add_new_image">
<div class="img">
<div class="file-upload-trigger">
<input type="file" name="imagem[]" class="none file-chooser" required/>
<img class="more" src="/assets/auto/images/add_image.png"/>
</div>
</div>
</div>
</div>
相关文章:
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 如何使用Node.js在JavaScript模块文件之间使用事件处理程序
- 通过将文件上载到ASHX处理程序来实现SSE(服务器发送的事件)
- 在javascript中导入xlsx文件时,如何手动强制javascript事件
- Dropzone最大文件大小超过事件
- 选择同一文件时未触发HTML输入文件选择事件
- 如何在 iPhone 上打开启用了 CSS 事件的 HTML 文件
- 如何在jQuery中处理输入类型=文件的onchange事件
- XHTML文件头部分中的事件驱动函数
- 触发AngularJS中的输入文件点击事件
- 如何调用另一个js文件中的函数或触发一个自定义事件,该事件将参数作为Jquery中的数据对象传递
- 根据文件类型取消绑定和重新绑定click事件处理程序
- 如何从加载的JSON文件构建外部事件列表
- 如何在jquery/JavaScript中打开浏览文件对话框时执行取消事件
- 从驱动器打开文件时未调用Onfileloaded事件
- JQuery多文件事件未激发
- 如何查找jquery或javascript事件从哪个文件发生
- 如何在javascript中从ondrop事件中获取文件URL
- 预加载音频文件/事件
- 两个组件在Angular2中干扰文件事件