Как использовать $(это) в плагине 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();
}
}
});