Javascript 子窗体事件上的jquery div淡出

Javascript 子窗体事件上的jquery div淡出,javascript,jquery,Javascript,Jquery,我是jquery/javascript新手,无法在谷歌上搜索任何解决方案 我有从循环自动生成的div数。它们中的每一个都包含作为子元素的表单。所以在提交表单时,我希望相应的父div淡出 我正在使用Ajax提交表单。基本上,现在我有一个绑定到divs中所有子表单的事件处理程序“submit”。这是它的样子 $('#divCreatedActivities').children('div').children('form').submit(function() {

我是jquery/javascript新手,无法在谷歌上搜索任何解决方案

我有从循环自动生成的div数。它们中的每一个都包含作为子元素的表单。所以在提交表单时,我希望相应的父div淡出

我正在使用Ajax提交表单。基本上,现在我有一个绑定到divs中所有子表单的事件处理程序“submit”。这是它的样子

        $('#divCreatedActivities').children('div').children('form').submit(function() {
            var options = { 
                    target:        $('#divCreatedActivities').children('div'), 
                    dataType:      'xml',
                    success:       submittedActivity
            };
            $(this).ajaxSubmit(options); 
            return false; 
        });

        function submittedActivity() {
            alert('ahoy!');     
        }
如何使用JQuery实现这一点

多谢各位

$('form').submit(function(){
    $(this).parent().fadeOut();
});
这就是方法。但我有一个问题,你怎么能看到它在提交时褪色??它不是在重新加载吗?你在使用ajax吗


根据你编辑的帖子

$('#divCreatedActivities form').submit(function() {
    var $this = $(this);
    var options = { 
         target:        $('#divCreatedActivities').children('div'), 
         dataType:      'xml',
         success:       function() {
                     $this.parent().fadeOut();
                     alert('ahoy!');    
         }
    };
    $this.ajaxSubmit(options); 
    return false; 
});

/* remove this
function submittedActivity() {
    alert('ahoy!');     
} */
欢迎来到
不要忘记接受答案

是的,您可以使用处理程序淡出包含以下表单的div:

$('#theFormId').submit(function() {
    $('#theDiv').fadeOut();
});
但是除非您延迟表单提交或使用ajax代替正常表单提交,否则动画可能永远不会发生,因为正常表单提交会撕裂页面,并将其替换为提交到服务器的结果。例如,如果希望淡出时间为500毫秒,可以这样做():

当然,这会将表单提交延迟半秒,并非所有用户都喜欢。。。此外,如果您依赖于知道用户按下了哪个提交按钮,则上面的内容将丢失(因为我们不再使用该按钮提交表单,而是取消该按钮,然后使用代码稍后提交)


在上面的示例中,我使用选择器“div:first”查找作为div的第一个祖先元素;您可以根据需要修改该选择器,或者如果div是表单的直接父级,您可以直接使用它。

您可以发布相关div的源代码吗?我们可以给你必要的选择器…我用一段源代码更新了问题,我想你可以把提交部分放在淡出回调中。
returnfalse表格上的code>就是我的想法。但这对我不起作用。谢谢,但我认为在这种情况下,坚持使用“#id”不是一个选项,因为我事先不知道哪个div事件会触发。或者我只是不明白:)@Paulus:我更新了答案,解释了更多,并演示/讨论了使用
parents
parent
查找相关div.@Reigel似乎这个代码有点小问题,我解开了
submit
事件,看看我们是否这样做,我认为该事件处理程序将每0.5秒调用一次。另一种解决方法是检查父项是否已褪色,如果已褪色,则
返回true是的,我正在使用Ajax。我用一段代码更新了一个问题谢谢$此为.parent().fadeOut();在$this上抛出一个错误。我做了$(这个),警报正在发射,但仍然没有消失。也许它与live()函数有关,因为div是动态生成的?编辑:缺少var$this=$(this)行。这是一种魅力!非常感谢你!!!没有具体的#我的表单id,因为我事先不知道将生成多少表单。表单的数量取决于用户以前所做的选择。
$('#theFormId').submit(function() {
    $('#theDiv').fadeOut();
});
// #theFormId can be any selector that selects the form(s) you want
// handled in this way; it's just an example
$('#theFormId').submit(function() {
    // `this` is set to the form's raw DOM element, remember it for use
    // in the closure below.
    var form = this;

    // Get a jQuery wrapper for the form element, use it to find the
    // first containing div. Start a fadeout on that div, and use the
    // fadeout callback to trigger the actual form submission.
    $(this).parents('div:first').fadeOut(500, function() {
        // Submit the form
        form.submit();
    });

    // Disable *this* form submission in favor of the above
    return false;
});