0

各行にデータ ( data-id) と<div class = "upload">Upload</div>. uploader_obj.buttonアップローダには、 initiating として setを含むオブジェクト<div>、サーバーに送信される data-id などのパラメータ、および私が示していない他の多くのものを渡す必要があります。

次のスクリプトはテーブルをループし、オブジェクトを変更してボタンと params.id を設定し、各行にアップローダーを作成します。

各行に個別のアップロード ボタンが作成されますが、それぞれが最後の行の値 (つまり 222) に設定された同じ params.id を参照します。それぞれを特定の行の値に設定する必要があります。

これを修正する 1 つの方法は、各アップローダに独自の upload_obj を持たせることですが、これはメモリの無駄のようです。

代わりに、uploader_obj 内で data-id を参照しようとしました。onSubmit 内で実行できますが、この値を使用して param.id を設定する方法がわかりません。次のようなことを行ってパラメーター内に設定しようとしましたparams: {'id':$(this.button).parent().parent().data('id')}が、これは私のドキュメントであり、アップローダーではありません。

それで...行ごとに個別のuploader_objを作成せずに、各行のアップローダーが独自のparam.idをサーバーに送信するにはどうすればよいですか? ありがとうございました

PS。弱いタイトルでごめんなさい。私は本当により良いものを考えようとしましたが、できませんでした。

<table>
    <tr data-id="123"><td>Hello</td><td><div class="upload">Upload</div></td></tr>
    <tr data-id="321"><td>Hello</td><td><div class="upload">Upload</div></td></tr>
    <tr data-id="222"><td>Hello</td><td><div class="upload">Upload</div></td></tr>
</table>

var uploader_obj = {
  button:null,
  params: {'id':null},
  onSubmit: function(id, fileName) {
     var id=$(this.button).parent().parent().data('id')
     console.log(id);
  },
  otherStuff: whatever
};


$('#myTable div.upload').each(function(i,v){
    uploader_obj.button=this;
    uploader_obj.params.id=$(this).parent().parent().data('id');
    new qq.FileUploaderBasic(uploader_obj);
});
4

3 に答える 3

1

問題は、「uploader_obj」の新しいオブジェクトを作成しないことだと思います。したがって、ループの繰り返しごとに、オブジェクトの値を上書きしています。

編集:

var a = new Object();

$('#myTable div.upload').each(function(i,v){
    a[i] = uploader_obj;
    a[i].button=this;
    a[i].params.id=$(this).parent().parent().data('id');
    new qq.FileUploaderBasic(a[i]); 
});
于 2012-12-15T14:29:45.180 に答える
1

すべての反復で同じオブジェクトを渡しています。代わりに、ループ内にある値からオブジェクトを作成するだけです:

$('#myTable div.upload').each(function(i,ele){
    new qq.FileUploaderBasic({
        button: ele,
        params: {
            id: $(ele).closest('tr').data('id')
        },
        onSubmit: function(id, fileName) {
            var id=$(this).closest('tr').data('id')
        },
        otherStuff: whatever
    });
});
于 2012-12-15T14:35:53.980 に答える
0

アップローダ オブジェクトをグローバル変数にするのではなく、qq.FileUploaderBasic 関数にローカル変数にして、button_object と data_id をパラメータとして渡すと、うまくいくかもしれません。あなたはのように試すことができます

$('#myTable div.upload').each(function(i,v){
    var button=this;
    var id=$(this).parent().parent().data('id');
    new qq.FileUploaderBasic(button,id);
});

オブジェクトを関数内に保持します。

于 2012-12-15T14:36:36.967 に答える