内部JQuery document.ready覆盖外部的

时间:2012-02-14 19:51:14

标签: jquery override external internal document-ready

我的通用外部文件document.ready()带有$('form').submit()操作,但是,我想在我的一个文件中覆盖此操作,其中包含document.ready()

换句话说,我希望我的内部document.ready()应该在$('form').submit()工作之前对表单进行额外检查。

2 个答案:

答案 0 :(得分:0)

在您的内部代码中,您可以尝试停止submit事件的即时传播:

$(function () {
    $('form').on('submit.immediate', function (event) {
        event.stopImmediatePropagation();
    });
});

然后,当您希望表单能够再次提交时,您可以删除此绑定:

$('form').off('submit.immediate');

这只会删除附加submit命名空间的immediate事件处理程序,因此其他绑定将保持不变。

完全有可能我不太了解你的问题。您可能只需要将一个事件处理程序绑定到停止其发送能力的表单,直到您决定发送它们为止:

$(function () {
    $('form').on('submit.immediate', function (event) {
        event.preventDefault();
    });
});

event.preventDefault()将停止提交表单,然后您可以在提交表单后删除此事件处理程序。

请注意,.on() / .off()是jQuery 1.7中的新功能,上面使用的案例与.bind() / .unbind()相同:http://api.jquery.com/on,{ {3}}

event.stopImmediatePropagation()的文档:

  

保持其余的处理程序不被执行并阻止   冒泡DOM树的事件。

来源:http://api.jquery.com/off

答案 1 :(得分:0)

我的方法是:

var formActions = new function() {

    this.form = $('form');

    this.doStuff = function() {

        //Do Stuff  

        //If you got more than one form
        $.each("this.form", function(i, v) {
            //PlayWithForm
        })

        this.submit();
    };

    this.submit = function () {

        this.form.trigger( "submit");
    }

}

$.fn.ready(function() {
    formActions.doStuff();
})