我正在使用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()
我做错了什么?
答案 0 :(得分:1)
不要使用live
,它已被弃用(并且自1.9以来已死)。请改用on
或delegate
。来自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);
});
});
});
如果您需要更多有关显示图片的具体帮助,则必须使用更详细的代码示例更新您的问题。