问题:因为ajax新添加的元素需要绑定事件,使用click()、bind()、on()都需要写在ajax内,嵌套太多了,需要事件委派功能,但最新的jquery已经不能使用live()了
解决:使用jquery中另一个方法delegate方法(最新的jquery中degegate也弃用了,可以使用on事件替代)
方法:
$('#upload_form').on('submit',function(){
var formData = new FormData($(this)[0]);
$.ajax({
url: '/api/upload',
type: 'post',
data: formData,
dataType: "json",
async: false,
cache: false,
contentType: false,
processData: false,
success: function(data){
if(data.code=='err'){
alert(data.msg);
}else if(data.code=='ok'){
alert("上传成功!");
var file_html = '
'+ data.result['oname'] +'';
$('ul').append(file_html);
}else{
}
}
});
return false;
});
// 给li绑定click事件
// $('ul').delegate('li', 'click', function(){
// var thisId = $(this).attr('id');
// alert(thisId);
// });
// 给li绑定click事件,替换上面的delegate方法
$('ul').on("click", "li", function(){ // 注意此处是先事件,后子元素
var thisId = $(this).attr('id');
alert(thisId);
});