1

我有以下代码:

$(文档).ready(函数 () {

function loginLinkClick(e) {
    e.preventDefault();
    $('#loginLink').unbind('click', loginLinkClick);
    dialog(this);
}
function registerLinkClick(e) {
    e.preventDefault();
    $('#registerLink').unbind('click', registerLinkClick);
    dialog(this);
}

$('#loginLink')
    .bind('click', loginLinkClick);
$('#registerLink')
    .bind('click', registerLinkClick);
$('#logoutLink')
    .click(function (e) {
        window.location = $(this).attr('data-href')
    });

});

我想让我的 loginLinkClick 和 registerLinkClick 函数可用于其他 javascript 文件。有没有办法我可以做到这一点?我正在使用 jQuery,所以我应该将它们放入 jQuery 命名空间或类似的东西中吗?

还有一个问题。从性能或可维护性的角度来看,我是否应该在 $(document) 之外拥有类似的功能

4

3 回答 3

3

使功能在该范围之外可用,而不是

function loginLinkClick(e) { }

尝试将它们添加到窗口对象

window.loginLinkClick = function(e) { }
于 2012-09-09T12:48:51.907 回答
2

从本地命名空间中删除它们并在“其他 javascript 文件”之前导入此文件,这些功能将可供它们使用。

从这篇文章中引用 Torok Gabor :

把它放在里面,这样它就不会污染全局命名空间。由于 JavaScript 的作用域链,它还确保更快地解析函数名称。

如果它是可重用组件,请将其放在外面,以便您可以轻松地将其移动到单独的文件中并从不同的上下文中调用。

于 2012-09-09T12:48:34.890 回答
2

要么将函数添加到window对象中,要么将它们移出本地function范围。

$(document).ready(function () { 
    window.loginLinkClick = function (e) {
        e.preventDefault();
        $('#loginLink').unbind('click', loginLinkClick);
        dialog(this);
    };
});

或者:

function loginLinkClick(e) {
    e.preventDefault();
    $('#loginLink').unbind('click', loginLinkClick);
    dialog(this);
};

$(document).ready(function () { ... });
于 2012-09-09T12:50:13.307 回答