我有多行包含文件上傳控制onchange事件的特定行fileupload控制我選擇第一列文本並通過ajax請求發送它的值。如何將事件的「this」對象更改爲其他函數?
$(document).on('change','#uploadSupportingDoc',function(){
console.log("on change called!");
var questionId = $(this).parent().siblings(":first").text(); // 1st column
console.log("fileUpload called with Id =>"+questionId);
uploadFile(questionId,this);
});
但是,有一列(用css class .fileuploadSuccess),我想更改圖標顯示上傳成功或失敗。
function uploadFile(questionId,row){
console.log("fileUpload called with Id =>"+questionId);
var isUploaded = false;
$('#uploadSupportingDoc').fileupload({
url: 'uploadSupportingDoc.html',
formData: {questionId: questionId },
acceptFileTypes: /(\.|\/)(jpe?g)$/i,
maxFileSize: 100,
dropZone: null,
pasteZone: null,
fileInput: $(this),
dataType: 'json',
add: function(e, data){
$(row).closest('tr').children('td.fileuploadSuccess').html('<img src="./img/ajax-loader.gif" alt="Uploading..." />');
data.submit();
},
done: function (e, data){
var response = data.result.files[0];
if(!response.isRequestValid)
{
window.location = "requestDenied.html";
}
else
{
if(response.status)
{
$(row).closest('tr').children('td.fileuploadSuccess').html("<span class=\"glyphicon glyphicon-ok\" aria-hidden=\"true\"></span>")
}
else
{
$(row).closest('tr').children('td.fileuploadSuccess').html("<span class=\"glyphicon glyphicon-remove\" aria-hidden=\"true\"></span>")
}
}
},
fail: function(e, data){
console.log("failed");
console.log(data.jqXHR.responseText);
console.log(data.jqXHR+"\m");
},
always: function (e, data){
}
});
}
我試圖發送這種方式,
uploadFile(questionId,this);
,並試圖訪問它這個樣子,
$(row).closest('tr').children('td.fileuploadSuccess').html("<span class=\"glyphicon glyphicon-ok\" aria-hidden=\"true\"></span>");
Howerer這是行不通的,每次它正在改變的價值第一排列。爲什麼會發生?這種要求的任何解決方案?
你有一份在線我們可以玩嗎? –
不幸我現在沒有codebase,明天會發布jsfiddle。 – piechuckerr
是否有任何具體的原因,你使用相同的ID每行「#uploadSupportingDoc」?這可能是問題,因爲id選擇器總是返回第一個對象。 – Diljohn5741