javascript - 自匿名函数在加载时运行绑定(bind)事件

标签 javascript jquery modular-design

我正在尝试遵循模块化 js 设计模式(揭示),但我有一个问题。当我像这样绑定(bind)事件监听器时:

$addClient.submit(ajaxCall);

事件 ajaxCall 不会在加载时运行。但是,当我添加括号时,如下所示:

$addClient.submit(ajaxCall());

...它在加载时运行并且不绑定(bind)到事件。是什么赋予了?我想向 ajaxCall() 函数添加一个参数,但我似乎无法让它正常工作。为了让您了解上下文,以下是整个代码:

var Ajax = (function(){
   var $addClient = $('#add_client');

   $addClient.submit(ajaxCall);


   function ajaxCall(clearFields) {
        console.log('function called');
        var data = $(this).serialize();
        var url = this.action;
        $.ajax({
            type: 'POST',
            url: url,
            dataType: 'json',
            data: data,
            success: function(data) {
                if(data.st === 0) {
                    $messageContainer.html('<p class="alert alert-danger">' + data.msg + '</p>');
                    setTimeout(function(){
                        $messageContainer.html('');
                    }, 7000);
                } else {
                    $messageContainer.html('<p class="alert alert-success">' + data.msg + '</p>');
                    if(clearFields === true) {
                        $('input[type="text"]').val('');
                        $('input[type="email"]').val('');
                        $('textarea').val('');
                    }
                    setTimeout(function(){
                        $messageContainer.html('');
                    }, 7000);
                }
            }
        });
        return false;
    }
})();

最佳答案

您应该绑定(bind)到主体,当元素不可用时,它将消除绑定(bind)问题,还可以通过将其包装在匿名函数中来传递参数:

$('body').on('submit', '#add_client', function () {
    ajaxCall(yourArguments)
});

关于javascript - 自匿名函数在加载时运行绑定(bind)事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33807503/

相关文章:

javascript - 单击按钮提交多个表单,一个接着一个

javascript - 在 slick 中强制克隆幻灯片

c++ - 什么是模块

c# - 如何在 C# 中将属性作为参数传递?

javascript - Javascript 中的 float 正在四舍五入

javascript - 为什么 angularjs ng-repeat 不能正常工作?

javascript - 如何防止 iFrame 在按下后退按钮时自动播放?

javascript - 带有 Angular $resources 的 query(), "Undefined is not a function"

jquery - 如何使用 jQuery 获取 div 的全部内容的高度?

c++ - 如何在不同文件中使用对象 vector