jQuery在AJAX调用后重新绑定.submit()方法

3
我正在创建一个论坛风格的系统,其中会创建帖子,用户可以在原始帖子上发布评论。(实际上我做的事情在上下文中非常不同,但主题是相同的)。
添加评论的表单是帖子的一部分,使用jQuery $.get() 拉取。
这是当前的提交处理程序:
$('#add-stage-form').submit(function(){

        var data = $('#add-stage-form').serialize();
        add_stage(data);
        return false;   
    });

好的,现在,我需要在它被拉进来之后重新绑定,就像可以使用live()一样。

如果有人建议使用live('submit', function(){ ... }),请不要,因为提交不像点击那样工作!

我也很清楚,我可以在同一个按钮上绑定“click”事件-如果可能的话,我宁愿绑定.submit()事件。

提前感谢! :)


那么你是在提交后将按钮重新注入到DOM中吗? - Nic
是的。我使用 .get() 方法获取了一堆帖子,每个帖子都有评论框和提交按钮。 - Alex
2个回答

5

您可以在get方法的onComplete回调中手动添加绑定...

$.get('getposts.html', function(data) {
    var myForm = $(data);
    $('.formContainer').append(myForm);

    $('.add-stage-form', myForm).submit(function(){

        var data = $(this).serialize();
        add_stage(data);
        return false;   
    });

});

*编辑 将add-stage-form更改为类而不是id。你是否提到每篇文章都会有一个表单?


你说得对。实际上,这可能会使整个过程变得不可行,因为如果不使用丑陋的.find()函数,就无法序列化正确(可能有多个)的表单。 - Alex
你应该没问题。你可以使用$(this)来获取正在提交的表单。 - Dean North
我已经完成了一半 - 谢谢!一旦它完全可用,我会将其标记为“正确答案”! :) - Alex
干得好,伙计,你是个明星* - Alex
很好,如果你有任何其他问题,请告诉我 :) - Dean North

1

你尝试过使用Live()吗? :)

但是说真的,如果你将一个点击事件附加到按钮上,然后调用jQuery.Post()操作,甚至是提交页面的javascript方法,这可能不是一个坏主意。

我知道这不是(最好的)解决方案,但它可能会帮助你完成任务。

如果有更好的答案出现,我会撤回这个答案。


不,你说得对 - 我可能应该这样做,我非常希望找到一种绑定.submit的方法,这将非常有用 - 特别是如果我想使用jQuery验证等..欢迎开玩笑 ;)(我几乎在阅读之前就疯了..) - Alex
我正在jsfiddle上测试这个,但是无法使其工作。然后jsfiddle出了问题,我的测试代码不见了,叹气 - Nic
我完全支持偶尔发疯。实际上,我非常喜欢只有一个按钮然后在代码中进行提交的想法。我认为这样我可以在提交之前进行一些验证。 - griegs
@Alex coady,你尝试过@Dean North的答案吗? - griegs
我有,但它仍未绑定(单击提交会刷新页面,因此return false肯定没有激活..) - Alex
现在它返回false(通过@Dean North的答案)。一旦完成,我会发布最终(可工作)的解决方案。 - Alex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接