2

我正在使用 plupload 并且我想在上传所有文件时动态更新我的画廊(jquery.ajax()),我在其中使用灯箱等(换句话说,我想让 js 在 ajax 加载的内容中工作)。

我现在正在做的是这个

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

虽然乍一看该bind方法似乎是 jQuery bind,但通过 Plupload API 快速搜索显示它实现了自己的bind方法,恰好与 JQuery 版本具有相同的签名。因此,您的原始代码很好,并且不使用任何已弃用的功能。

编辑:

似乎有两个问题:bind被弃用(在上一段中回答)以及上传完成后如何显示上传的图像。至于第二个问题,希望这个例子能让你开始:

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 回答
1

不要使用live,它已被弃用(自 1.9 起已死)。使用on或者可能delegate代替。来自http://api.jquery.com/live/

从 jQuery 1.7 开始,不推荐使用 .live() 方法。使用 .on() 附加事件处理程序。旧版本 jQuery 的用户应该使用 .delegate() 而不是 .live()。

于 2013-04-27T20:39:36.280 回答