Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JQuery AJAX post中指定DOM元素_Jquery - Fatal编程技术网

在JQuery AJAX post中指定DOM元素

在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){

在使用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");
        });
我正在做一个问答网站。当用户按下“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))