0

次の関数はうまく機能します。ただし、新しいパラメータを渡して同じ関数を再利用したいと思います。それを行うための最良の方法は何ですか?

function overlay_f (clickable_link, current_link, overlay_content, overlay) {
    var clickable_link = $('.p_wrapper p'),
        overlay = $('#overlay'),
        close_overlay = $('.close_overlay');

    clickable_link.click(function (evt) {
        evt.preventDefault();

        current_link = $(this).attr('class');
        var overlay_content = $('#'+current_link);

        overlay.children().fadeOut(200).promise().done(function () {
            overlay_content.fadeIn();
        });

        overlay.fadeIn();
    });

    overlay.click(function () {
        overlay.fadeOut();
        overlay.children().fadeOut(500);
    });
}    

overlay_f();
4

2 に答える 2

1

私はあなたがこのようなものを探しているかもしれないと思います:

function overlay_f(cl, o, co) {
    var clickable_link = $(cl),
    overlay = $(o),
    close_overlay = $(co);

    clickable_link.click(function(evt){
        evt.preventDefault();

        current_link = $(this).attr('class');
        var overlay_content = $('#'+current_link);

        overlay.children().fadeOut(200).promise().done(function () {
            overlay_content.fadeIn();
        });
        overlay.fadeIn();
    });

    overlay.click(function(){
        overlay.fadeOut();
        overlay.children().fadeOut(500);
    });
}   

overlay_f('.p_wrapper p', '#overlay', '.close_overlay');
于 2013-02-14T13:27:41.553 に答える
0

現在、パラメーターと同じ名前の変数を宣言している場合(関数を呼び出すときに引数を渡すことはありません)、代わりに値が既に渡されているかどうかを確認し、値が「デフォルト」値に初期化される場合のみしていません。

function overlay_f(clickable_link, current_link, overlay_content, overlay) {
    var clickable_link = clickable_link || $('.p_wrapper p'),
        overlay = overlay || $('#overlay'),
        close_overlay = $('.close_overlay');

    clickable_link.click(function (evt) {
        evt.preventDefault();

        var current_link = current_link || $(this).attr('class'),
            overlay_content = overlay_content || $('#' + current_link);

        overlay.children().fadeOut(200).promise().done(function () {
            overlay_content.fadeIn();
        });
        overlay.fadeIn();
    });

    overlay.click(function () {
        overlay.fadeOut();
        overlay.children().fadeOut(500);
    });
}

次に、引数なしで呼び出します。

overlay_f();

または、内部で使用したい引数を渡します。

overlay_f(arg1, arg2, arg3, arg4);
于 2013-02-14T13:24:34.067 に答える