在JQuery AJAX post中指定DOM元素
在使用JQuery编写AJAX文章时,我在更新DOM时遇到了问题。这是JQuery代码:在JQuery AJAX post中指定DOM元素,jquery,Jquery,在使用JQuery编写AJAX文章时,我在更新DOM时遇到了问题。这是JQuery代码: $('.answerForm').live('submit', function(event) { event.preventDefault(); $.post($(this).attr('action'), $(this).serialize(), function(data){
$('.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");
});
我正在做一个问答网站。当用户按下“reply”时,应答表单(class='answerForm',无id)被注入DOM中。如果成功发生,我想做的是隐藏答案,用答案替换下一个答案。但看起来我不能在函数(数据)中使用$(this)
我想知道除了使用ID标记所有对象之外,是否还有机会选择正确的DOM对象
谢谢将上下文捕获到变量中,并在成功回调中使用该变量:
$('.answerForm').live('submit', function(event) {
event.preventDefault();
var that = this;
$.post($(this).attr('action'), $(this).serialize(), function() {
...
$(that).hide();
另外,如果您感兴趣,如果您使用了一个使对象成为所有回调上下文的,那么:
$.ajax({
url: $(this).attr('action'),
context: this,
success: function() {
$(this).hide();
}
});
创建一个命名的成功处理程序,如
function mySuccessHandler(data) {
$(this).hide();
}
然后在你的电话里你可以做什么
$.post($(this).attr('action'), $(this).serialize(), $.proxy(mySuccessHandler, this))