2012-11-18 72 views
1

我正在使用提交表單而不重新加載頁面的jQuery/Ajax腳本。我在頁面上有多個表單,並且它們都具有相同的類(並且沒有id)。這工作得很好提交使用形式:slideUp獨立元素

$('document').ready(function() 
{ 
    $('.form').ajaxForm({ 
     success: function() { 
      //$('.form').addClass("clicked"); 
      //$(this).slideUp('fast'); 
     } 
    }); 
}); 

,但只要我想要做的事時,提交成功後,似乎沒有要指代在提交表單的方式。使用這個操作符是有道理的,但它不起作用。我想要做這樣的事情:

$(this).slideUp('fast'); 

每個元素單獨取決於提交的表單。 (使用.form作爲選擇器不起作用,因爲它隱藏了所有表單)。

我已經嘗試向窗體中添加一個類(儘管似乎無法引用正確的元素),然後用於調用slideUp函數。

感謝

回答

2

您正在使用的給ajaxForm插件提供了對成功的回調形式的引用:

success: function (responseText, statusText, xhr, $form) { 
    $form.slideUp("fast"); 
} 

文檔:http://jquery.malsup.com/form/#ajaxForm

如果你沒有使用這個插件,你必須自己保留這個參考。一種流行的方法是通過像self分配的東西保存參考相應this

$(".form").on("submit", function() { 
    var self = this; 
    $.ajax({ 
     success: function() { 
      $(self).slideUp(); 
     } 
    }); 
}); 
+0

謝謝:)完美工作。應該有想過看看插件本身 – Andrew

1

該插件爲您提供了另一種方法 - ajaxSubmit() - 這可以如下使用:

$('.form').submit(function() { 
    var $form = $(this); 
    $form.ajaxSubmit({ 
     success: function() { 
      $form.addClass("clicked").slideUp('fast');//or whatever 
     } 
    });  
    return false; //suppress natural form submission 
});