0

オプションを使用する基本的なプラグインを作成してから、設定されたオプションを使用するオブジェクトからメソッドを作成しようとしています。

 $.sn_Watermark = $.sn_Watermark || {
        options: {
            waterMarkText: "Watermark Text",
            className: "watermarked"
        },
        show: function(selector) {
            $(selector)
                .addClass("watermarked")
                .val("Watermark Text");
        }
    };  

   $.fn.sn_Watermark = $.fn.sn_Watermark || function (options) {
            if(options == null)
                options = $.sn_Watermark.options;
            else
                options = $.extend($.sn_Watermark.options, options);

            return this.each(function () {
                $tb = $(this);
                    if ($tb.val() == "" || $tb.val() == options.waterMarkText ) {
                        $tb.addClass(options.className);
                        $tb.val(options.waterMarkText);
                    }
                }).focus(function () {
                    $tb = $(this);
                    if ($tb.val() == options.waterMarkText) {
                        $tb.val("");
                        $tb.removeClass(options.className);
                    }
                }).blur(function () {
                //var clearLnk = "[LnkClearRowNum=" + $tb.attr('TextBoxRowNum') + "]";
                if ($tb.val() == '') {
                    // $(clearLnk).hide();
                    $tb.addClass(options.className);
                    $tb.val(options.waterMarkText);
                }
                else if ($tb.val() == options.waterMarkText){ //if user types in water mark text
                    $tb.addClass(options.className);
                }
                else {
                    //$(clearLnk).show();
                    $tb.removeClass(options.className);
                }
            });
        };

    $(document).ready(function () {
      $("[TextBoxRowNum]").sn_Watermark({waterMarkText: "My Text"} );
      $.sn_Watermark.show("[TextBoxRowNum]");
   });

したがって、show を呼び出すと、「ハードコードされた」デフォルトが使用されます。私はこのようなことをしようとしていましたが、運がありませんでした。

 $.sn_Watermark = $.sn_Watermark || {
        options: {
            waterMarkText: "Watermark Text",
            className: "watermarked"
        },
        show: function(selector) {
            $(selector)
                .addClass(options.waterMarkTest)
                .val(options.className);
        }
    };

私の質問は、show メソッドでオプションを渡す簡単な方法はありますか?

4

2 に答える 2

0
$.sn_Watermark = $.sn_Watermark || {
    options: {
        waterMarkText: "Watermark Text",
        className: "watermarked"
    },
    show: function(selector) {
        $(selector)
            .addClass($.sn_Watermark.options.className)
            .val($.sn_Watermark.options.waterMarkText);
    }
};

とった。それを自分自身と呼んでもらいましょう。

于 2012-06-20T19:44:12.867 に答える
0

拡張を介してこれらのオプションを適用する外部メソッドを作成する理由はありません。

オプションをプラグイン関数内に配置してから拡張してみませんか?

于 2012-06-20T19:10:04.960 に答える