1

次のコードがあります。

$(document).ready(function () {

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名前空間などに配置する必要がありますか?

もう1つ質問です。パフォーマンスの観点から、または保守性のために、これらのような関数を $(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 に答える