jQuery - 使用live而不是bind?

时间:2013-04-27 20:37:39

标签: javascript jquery plupload

我正在使用plupload,我想动态更新我的画廊(jquery.ajax()),我使用lightbox&等等(换句话说,我想保持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()

相同

我做错了什么?

2 个答案:

答案 0 :(得分:1)

不要使用live,它已被弃用(并且自1.9以来已死)。请改用ondelegate。来自http://api.jquery.com/live/

  

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

答案 1 :(得分: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);
    });
  });
});

如果您需要更多有关显示图片的具体帮助,则必须使用更详细的代码示例更新您的问题。