Как использовать $(это) в плагине jquery ajaxform

У меня есть 3 формы в аналогичных наборах полей, используя ajaxform. Я хочу, чтобы при обновлении формы она обновляла только родительский набор полей. что происходит сейчас, потому что у меня нет переменной $(this), я не могу указать ajaxform, которую я хочу обновить только отправленную форму:

$(".toggle-form-submit").parents("form").ajaxForm({
  dataType: 'html',
  success: function(html) {
    var myForm = $(this);
    console.log(myForm);
    if(myForm.parents("fieldset").find(".replaceable").length) {
      updateReplaceableAndClearAndCloseFormWithin(myForm.parents("fieldset"), html);
    } else {
      longPanelUpdateReplaceableAndClearAndCloseFormWithin(myForm.parents("fieldset"), html);
    }
    if( $(".test-categories-list").length) {
      initSortableTestCases();
    }
  }
});

По-видимому, myForm является объектом ответа. что я хочу, так это селектор jquery для текущей формы, чтобы он мог найти своих родителей. Я не могу установить переменную в экземпляре ajaxform, так где я должен установить $(this)/myForm?

1 ответ

Решение

Предполагая, что вы используете этот плагин формы jQuery Ajax, 4-ым аргументом метода успеха будет обернутая форма jQuery, которая использовалась:

http://jquery.malsup.com/form/

Так что это должно работать:

$(".toggle-form-submit").parents("form").ajaxForm({
  dataType: 'html',
  success: function(html, status, xhr, myForm) {    
  console.log(myForm);
  if(myForm.parents("fieldset").find(".replaceable").length) {
    updateReplaceableAndClearAndCloseFormWithin(myForm.parents("fieldset"), html);
  } else {
    longPanelUpdateReplaceableAndClearAndCloseFormWithin(myForm.parents("fieldset"),     html);
  }
  if( $(".test-categories-list").length) {
    initSortableTestCases();
  }
 }
});
Другие вопросы по тегам