1. 前言

在使用 AjaxFileUpload 插件的时候, 发现使用 jQuery 监听 change 事件只生效一次

1
2
3
4
$('#upload').change(function() {

});

那么是为什么呢?

2. 原因

找了下原因,原来是 130 行对事件进行了 unbind

1
2
jQuery(io).unbind()

3. 解决

1) 使用 on() 方法(推荐):

1
2
3
4
$(document).on('change', '#upload', function() {

});

2) 在 change 起作用之后继续绑定 change 事件

3) 替换原来的 input:

1
2
$('#upload').replaceWidth('<input id="upload" type="file" />')