Идентификатор доступа к элементу ajaxForm

#jquery #upload #progress-bar #jquery-forms-plugin #identify

#jquery #загрузка #индикатор выполнения #jquery-forms-плагин #определить

Вопрос:

Мне нужно получить доступ id к form элементу с class="ajax-upload-image" помощью. У меня есть несколько таких forms элементов с одинаковыми class , поэтому мне нужно получить доступ к id , но, похоже, я не могу получить правильные значения, используя $(this) . Мне нужно это значение в обоих beforeSend , uploadProgress , и complete .

Есть ли какой-нибудь способ сохранить пользовательскую переменную или извлечь ее через data отправляемую? Мое текущее «решение» состоит в том, чтобы сохранить глобальную переменную с идентификатором, к которому обращались в последний раз, но это вряд ли является решением, поскольку можно использовать формы до завершения загрузки предыдущих, что означает изменение глобальной переменной.

Мой урезанный код до сих пор (без глобальной переменной):

 $('.ajax-upload-image').ajaxForm({
    delegation: true,
    dataType: 'json',

    beforeSend: function() {
        // Some code
    },

    uploadProgress: function(event, position, total, percentComplete) {
        // Some code
    },

    complete: function(data) {
        // Some code
    }
});
  

Любая помощь высоко ценится, так как я, кажется, очень застрял на этом этапе.

Комментарии:

1. почему глобальные переменные не работают? работает, даже если они отправляются одновременно! var that=this;

2. @AminJafari Мне нужно иметь их динамическое количество без ограничений. Глобальные переменные просто не работают для этого.

Ответ №1:

При вызове вы ajaxSubmit() можете передать context: параметр. Все обратные вызовы будут привязаны к этому контексту:

 $(".ajax-upload-image").submit(function() {
    $(this).ajaxSubmit({
        context: this,
        ...
    });
});
  

Затем вы сможете использовать $(this) и this.id в обратных вызовах для ссылки на отправленную форму.