在使用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标记所有内容。
由于
答案 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))