モジュラーjsデザインパターン(明らかに)に従おうとしていますが、質問があります。イベントリスナーを次のようにバインドすると:
$addClient.submit(ajaxCall);
イベントajaxCall
はロード時に実行されません。ただし、括弧を追加すると、次のようになります。
$addClient.submit(ajaxCall());
...ロード時に実行され、イベントにバインドされません。何を与える?関数に引数を追加したいのですが、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;
}
})();