jQuery:如果元素加载了ajax事件?

时间:2010-08-04 03:27:59

标签: jquery ajax events

奇怪的问题。我正在尝试扩展一个小插件,它位于我博客的侧边栏中。该插件附带了一些Ajax。它包含一个表单,当它提交时,它会加载d iv#error_msgdiv#success_msg(全部通过ajax)。

有没有办法让我发现其中一个div出现的时间?就这样得到我想要的:我希望在提交表单时将文本添加到侧边栏中的表单。只要两个div中的一个(错误或成功)以该表单加载,我想再次删除前置元素。

你们知道这样做的方法吗?我不想编辑插件的源代码!

编辑:checkMsg()未定义!为什么呢?

var check = 0;

function showLoader() {
        $('#mc_signup_form').prepend('<span class="loading"> loading </span>');
        check = setInterval ( "checkMsg()" , 300 );
    }

function checkMsg() {
    if ( $('.mc_error_msg').length == 0 || $('.mc_success_msg').length == 0 ) {
        $('#mc_signup_form .loading').remove();
        clearInterval(check);
    }
}

2 个答案:

答案 0 :(得分:0)

您可以在超时循环中查询DOM以查看它是否存在。野蛮但有效。您最好找到应用程序进行ajax调用的位置并直接访问响应处理程序。

答案 1 :(得分:0)

您可以通过简单地修改表单的onsubmit属性来进行前置,但删除文本有点棘手。

使用JQuery's AOP Plugin,您可以在任何功能之前或之后运行自定义事件。如果你能找到插件用于添加div的js函数,你可以在函数运行后删除你的消息。

根据插件的编码方式,可能会采用更清洁的方式。看看它正在做什么来触发添加div,你可能有机会注入一个回调。此外,如果您在问题中添加插件的名称,社区将能够更具体地回答您。