1

如果项目和每个项目我都有按钮,我有一个列表。当我单击该按钮时,我会进行服务器调用,然后在调用之后我需要更改按钮文本。所以我写这个函数来ajaxify调用:

$('.form').ajaxForm({
            beforeSubmit: function () {                
            },
            success: function (result) {
                $('.itemHoverBox').attr('value', 'Confirmed');
            },
            error: function (xhr, textStatus, errorThrown) {           
            }
        });

这是操作按钮:

@using (Html.BeginForm("Confirm", "Products", new { productId = @t.ProductId }, FormMethod.Post, new { @class="form"}))
{
<input style="width: 60px;" class="itemHoverBox button white" type="submit" value="Confirm" />
}

但这一切都itemHoverBox在页面上发生了变化,而我正在尝试的只是更改我单击的按钮。就像您在 stackoverflow 上单击最喜欢的问题明星时一样。
我的操作方法现在返回 void:

[HttpPost]
        public void CollectTicket(int ticketId)
        {
            ...           
        }
4

1 回答 1

3

您可以在闭包中捕获表单:

$('.form').each(function() {
    var form = $(this);
    form.ajaxForm({
        success: function (result) {
            form.find('.itemHoverBox').attr('value', 'Confirmed');
        }
    });
});

甚至更清洁,使用context参数:

$('.form').each(function() {
    var form = $(this);
    form.ajaxForm({
        context: form,
        success: function (result) {
            // Here this will equal to the context object we specified
            this.find('.itemHoverBox').attr('value', 'Confirmed');
        }
    });
});
于 2012-04-07T12:21:11.037 回答