在JQuery AJAX帖子中指定DOM元素

时间:2011-01-24 17:31:32

标签: jquery

在使用JQuery执行AJAX帖子时,我无法更新DOM。这是JQuery代码:

        $('.answerForm').live('submit', function(event) {
            event.preventDefault();
            $.post($(this).attr('action'), $(this).serialize(),
                function(data){
                     if (data.success) {
                         $(this).hide();
                     }
                     else {
                         alert("not success");
                     }
                }, "json");
        });

我正在研究一个问题&回答网站。当用户按下“回复”时,在DOM中注入答案形式(class ='answerForm',no id)。如果成功发生我想做的是隐藏answerForm并用答案替换下一个。但看起来我不能在函数(数据)中使用$(this)。

我想知道是否有机会选择正确的DOM对象,除了使用id标记所有内容。

由于

2 个答案:

答案 0 :(得分:2)

将上下文捕获到变量中,并在成功回调中使用它:

$('.answerForm').live('submit', function(event) {
    event.preventDefault();
    var that = this;
    $.post($(this).attr('action'), $(this).serialize(), function() {
        ...
        $(that).hide();

此外,如果您感兴趣,如果您使用$.ajax,则会有context option使对象成为所有回调的上下文,因此:

$.ajax({
    url: $(this).attr('action'),
    context: this,
    success: function() {
        $(this).hide();
    }
});

答案 1 :(得分:0)

创建一个名为成功的处理程序,如

function mySuccessHandler(data) {
   $(this).hide();
}

然后在你的电话会议中你可以做到

$.post($(this).attr('action'), $(this).serialize(), $.proxy(mySuccessHandler, this))