2

私はpluploadを使用しており、すべてのファイルがアップロードされたときに、ライトボックスなどを使用するギャラリー(jquery.ajax())を動的に更新したい(つまり、ajaxをロードしたコンテンツでjsを動作させたい)。

今やってるのはこれ

var upload = $el.pluploadQueue();
upload.bind('UploadComplete',function(){
//ajax & etc
}

もちろん将来の要素のためではなく、 ( ).bind()に変更しようとしましたが、何らかの理由でイベントが実行されません。.live()upload.live('UploadComplete',function(){

私も試しました.on()

$(document).on('UploadComplete', upload, function() {

delegate:

$(document).delegate(upload, 'UploadComplete', function() {

しかし、同じことlive()

私は何を間違っていますか?

4

2 に答える 2

1

使用しないでくださいlive。非推奨です (そして 1.9 以降廃止されました)。onまたは多分delegate代わりに使用してください。http://api.jquery.com/live/から:

jQuery 1.7 以降、.live() メソッドは非推奨になりました。.on() を使用して、イベント ハンドラーをアタッチします。古いバージョンの jQuery のユーザーは、.live() よりも .delegate() を使用する必要があります。

于 2013-04-27T20:39:36.280 に答える
1

一見すると、このbindメソッドは jQuery bindのように見えますが、Plupload API をすばやく検索すると、たまたま JQuery バージョンと同じ署名を持つ独自のbindメソッドが実装されていることがわかります。したがって、元のコードは問題なく、非推奨の機能を使用していません。

編集:

2 つの質問があるようです:bind廃止予定 (前の段落で回答済み) と、アップロードが完了したらアップロードされた画像を表示するにはどうすればよいかです。2 番目の質問については、次の例を参考にしてください。

uploader.bind('UploadComplete', function(up, files) {
  $.each(files, function(index, file) {
    var img = $("<img />").attr('src', 'http://your-url.com/your-upload-directory/' + file.name);
    img.load(function() {
      //add lightbox specific code here
      $('.img-container').append(img);
    });
  });
});

画像の表示に関してより具体的なヘルプが必要な場合は、より詳細なコード例で質問を更新する必要があります。

于 2013-04-27T21:08:44.093 に答える