0

プロジェクトに使用したい最初のjQueryプラグインを作成しています。しかし、私が持っている知識はおそらく十分ではありません。それでも、私はそれを作り続けたいです...

だから私は私の小さなプラグインにこの部分を持っています:

jQueryプラグイン-デフォルト設定:

;(function($) {

var defaults = {

    title               : 'miniBox - Title Spot!',
    description         : 'miniBox Description Spot. Write a short article or leave it blank!',

    buttons: {
        switcher        : true,
        nameButton_1    : 'Continue',
        nameButton_2    : 'Discard',
    }
};

以下にこの部分があります:

$.fn.miniBox = function(customs) {
    var config = $.extend({}, defaults, customs);
    var $first = this.first();

    $first.init = function() {
        $('body').append( // -->
            '<div class="miniBox-wrap">'
        +       '<div class="miniBox-frame">'
        +           '<div class="miniBox-title"></div>'
        +           '<div class="miniBox-content">'
        +               '<div class="miniBox-description"></div>'
        +               '<div class="miniBox-buttons"></div>'
        +               '<div class="miniBox-counter"></div>'
        +           '</div>'
        +       '</div>'
        +       '<div class="miniBox-overlay"></div>'
        +   '</div>' // <--
        );

        var mB_buttonOne    = config.buttons.nameButton_1,
            mB_buttonTwo    = config.buttons.nameButton_2,
            mB_title        = config.title,
            mB_description  = config.description;

        // --> Confirmation Buttons - Settings OPEN //
        if(config.buttons.switcher === true) {
            $('.miniBox-buttons').append( // -->
                '<input type="button" id="agree" value=' + mB_buttonOne + '>'
            +   '<input type="button" id="disagree" value=' + mB_buttonTwo + '>'
            // <--
            );
        } else {
            $('.miniBox-buttons').remove();
        }
        // <-- Confirmation Buttons - Settings CLOSE //
        };
            $first.init();
    };

})(jQuery);

少し混乱しますが、初めてだと思います...

質問:

タイトルは設定の失敗につながるので、ここに別の質問があります。

デフォルトのタイトルと説明を設定してから、カスタムのタイトルや説明を作成すると、設定が機能しているように見えます...機能し、デフォルトを上書きします。

ただし、ボタンの短いifステートメントを読むことができるように...デフォルトまたは税関でボタンスイッチャーがfalseまたはtrueに設定されている場合、それは引き続き機能し、デフォルト設定を上書きします...ただし、デフォルトと税関の両方がtrueまたはfalseと言う場合。 ..ボタンの値は「未定義」になります。

カスタム設定が定義されていて、デフォルトを忘れている場合にのみ、常にカスタム設定を読み取ると言う方法がわかりません...またはそのようなもの。皆さんが私を理解してくれることを願っています。うまくいけば、私は答えを見つけるでしょう。

よろしく、ネナド。

編集:

「未定義」にならないように、税関にボタン設定を完全に定義する必要があるように見えます...これを修正するにはどうすればよいですか?

デフォルトの例:

var defaults = {
    buttons: {
        switcher        : false,
        nameButton_1    : 'Continue',
        nameButton_2    : 'Discard',
    }
};

税関の例:

$(function() {
$().miniBox({
    title: 'Works flawlessly!',
    buttons: {
        switcher: true
    }
});

});

カスタム設定に定義されていない場合でも、ボタン名にデフォルトのボタン設定を使用するにはどうすればよいですか?

4

1 に答える 1

1

.first単なるjQueryメソッドです。コレクションから最初の要素を選択します。

このinitメソッドは定義済みの関数であり、すぐに呼び出されます(この場合は少し無意味です)が、後でプラグインコードの外部で呼び出すこともできます(これも無意味です)。

質問の2番目の部分については、オブジェクトを再帰的に実行していなかっ.extendたため、ネストされたオブジェクトの値が拡張されていませんでした。深くするためtrueの最初の引数として使用します:http: //jsfiddle.net/ntdLu/1/.extend

于 2013-02-17T15:26:45.577 に答える