在ajax加载内容后,jQuery submit没有捕获提交事件

时间:2010-01-20 08:56:25

标签: jquery ajax

我使用jQuery Ajax加载函数将内容加载到我的弹出窗口,并且我在加载函数回调函数中使用了submit函数,但由于某种原因,事件根本没有被触发。 (我使用jQuery jquery-1.3.2.min.js)

$('.popup-container').load(url, function(){ 
    /** Do some stuff here */
    $("form").submit(function() { 
        alert("Form submitted!");       
        return false;
    });
});

4 个答案:

答案 0 :(得分:3)

更新

从jQuery 1.7开始,.live()方法is deprecated。它将在jQuery 1.9中删除。使用.on()附加事件处理程序。旧版jQuery的用户应使用.delegate()而不是.live()


原始答案

您可以使用jQuery方法live()来解决此问题。将live()submit()一起使用已添加到jQuery 1.4中,因此您应该获得更新。 Here is a video tutorial on using live() with submit()

使用实时功能时,您的代码应如下所示:

$("form").live('submit' , function() { 
    alert("Form submitted!");       
    return false;
});

$('.popup-container').load(url);

答案 1 :(得分:0)

我相信return false会阻止它提交。

答案 2 :(得分:0)

正如Tim所说,jQuery 1.4在live函数中增加了对提交处理程序的支持。他的代码应该适合你。

如果由于某种原因无法使用jQuery 1.4,则需要重新应用处理程序:

function applyHandlers(query) {
    $(query).submit(function() { alert('foo'); return false; });
}

applyHandlers('form');

$('.popup-container').load(url, function() {
    applyHandlers($('form', this));
});

有更优雅的方法可以做到这一点,但你得到了基本的想法。

答案 3 :(得分:0)

我有同样的问题。使用$(document).on('submit', '#form', function() {

代替: $("#form").submit(function() {

解决了这个问题。希望这有帮助。