Как узнать, какую форму я только что отправил в jQuery? - PullRequest
2 голосов
/ 27 августа 2010

Я использую функцию $.post для отправки запроса ajax как такового:

$('.typeAform').submit(function(){
    $.post('/home', { somevar : 'somevalue' }, function(){
         //do something with the original form
    });
    return false;
});

Я хотел бы идентифицировать свою форму после отправки из обратного вызова $.post, чтобы я мог что-то с ней сделать (т.е. изменить цвет фона, удалить ее и т. Д.). Обычно я мог бы вызывать форму по ее уникальному идентификатору, который я знаю заранее, но здесь у меня его нет - я использую класс для формы, а не один идентификатор.

Есть ли способ, с помощью которого я могу идентифицировать только что отправленную форму, не используя глобальную переменную (то есть передать ее как-нибудь обратному вызову).

Спасибо!

1 Ответ

3 голосов
/ 27 августа 2010

РЕДАКТИРОВАТЬ:

Поскольку целью события submit всегда должна быть сама форма, вы также можете использовать свойство target объекта event, так какв: e.target

$('.typeAform').submit(function( e ){
    $.post('http://apple.com', { somevar : 'somevalue' }, function(){
         // e.target references the form that was submitted.
         alert(e.target)
    });
    return false;
});​

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


Получить идентификаториз элемента DOM в .submit():

var id = this.id;

Так будет:

$('.typeAform').submit(function(){
    var id = this.id;
    $.post('/home', { somevar : 'somevalue' }, function(){
         //do something with the original form
         // Use the "id" here
    });
    return false;
});

Или, если вам нужна сама форма, просто укажите this.

$('.typeAform').submit(function(){
    var theForm = this;
    $.post('/home', { somevar : 'somevalue' }, function(){
         //do something with the original form
         // Use the "theForm" here
         alert( theForm.id );
         $(theForm).someJQueryMethod()
    });
    return false;
});

Обратите внимание, что когда вы находитесь внутри обратного вызова $.post, this больше не ссылается на <form>.Вот почему мы ссылаемся на него в переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...