2013-04-27 3 views
2

Я использую plupload, и я хочу динамически обновлять свою галерею (jquery.ajax()), где я использую lightbox & и т. Д. (Другими словами, я хочу, чтобы js работал в загруженном содержимом ajax), когда все файлы загружены ,jQuery - использовать live вместо привязки?

Что я делаю сейчас это

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()

Что я делаю неправильно?

ответ

1

Не использовать live, его устаревшее (и умершее с 1,9). Используйте вместо этого on или, возможно, delegate. От http://api.jquery.com/live/:

Начиная с jQuery 1.7, метод .live() устарел. Используйте .on() до , присоедините обработчики событий. Пользователи более старых версий jQuery должны использовать .delegate() в предпочтении .live().

+0

Я тоже пытался с ними, но не повезло. Можете ли вы привести мне пример того, как этот 'upload.bind ('UploadComplete', function() {' должен выглядеть с 'делегатом'? – user2081339

+0

Теперь вы упомянули, что используете plupload. Здесь может быть что-то еще. Я подозреваю, что это не проблема в привязке, но вместо этого где-то еще в коде. Я бы начал с двойной проверки того, что плагин plupload инициализирован и используется правильно. – jsalonen

+1

** 'live' мертв с 1,9 ** , но не устарели, но удалены! – gdoron

1

Хотя на первый взгляд метод bind кажется, JQuery bind, быстрый поиск через API Plupload показывает, что он реализует свой собственный bind метод, который только случается иметь ту же сигнатуру версии JQuery. Таким образом, ваш оригинальный код в порядке и не использует устаревшие функции.

Edit:

Кажется, есть два вопроса: является 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); 
    }); 
    }); 
}); 

Если вам нужна более конкретная помощь с отображением изображений, вам придется обновить свой вопрос с более подробными примерами кода.

+0

Хорошо :) Большое спасибо за то, что сообщили нам, но как я могу решить свою проблему? – user2081339

+0

@ user2081339 - Не уверен, что я понимаю ваш вопрос. Похоже, что ваш исходный код работает, но вы беспокоились о том, чтобы вскоре его удалить В то время как jQuery 'bind' удаляется в более поздних версиях, Plupload' bind' (полностью несвязанный метод) не упоминает об устаревании в [API] (http://www.plupload.com/plupload/docs/ api/# class_plupload.Uploader.html-bind). – ljfranklin

+0

моя проблема: я не могу использовать что-либо с javascript в содержимом, загруженном с помощью ajax - lightbox и т. д. – user2081339

Смежные вопросы