我正在尝试使用JavaScript 模块模式,但遇到了一个我不确定如何解决的问题。
所以我有 2 个脚本文件,因为我想分隔我的代码并使其更易于阅读。
// script 1
var abc = (function (my, $)
{
my.events = function ()
{
// selectors is from my base file(not shown as I don't think it is needed to be shown)
// my.selectors.createFrm = '#createFrm'
var createSubmitFrmHandler = $(my.selectors.createFrm).live('submit', function (e)
{
e.preventDefault();
});
}
return my;
} abc || {}, jQuery));
// script 2
var abc = (function (my, $)
{
my.dialogs = {
addDialog: function ()
{
var $dialog = $('<div></div>').dialog(
{
width: 580,
height: 410,
resizable: false,
modal: true,
autoOpen: false,
title: 'Basic Dialog',
buttons:
{
Cancel: function ()
{
$(this).dialog('close');
},
'Create': function ()
{
jQuery.validator.unobtrusive.parse(my.selectors.createFrm)
// this is undefined as page loadup no form was found so live did not kick in
my.createSubmitFrmHandler.validate().form();
}
}
});
return $dialog;
},
return my;
} abc || {}, jQuery));
所以我不确定如何确保 createSubmitFrmHandler 已定义并继续我正在做的事情。
编辑
我最终做了这样的事情
var abc = (function (my, $)
{
my.events = function ()
{
// some one time events here
}
my.test = function()
{
var add = $(selectors.createFrm).live('submit', function (e)
{
e.preventDefault();
});
return add;
};
}
我唯一不确定的是,如果我一遍又一遍地调用这个函数,它会继续生成这个对象,还是会看起来并看到 live 已经绑定并且不会再进行绑定?