オプションを使用する基本的なプラグインを作成してから、設定されたオプションを使用するオブジェクトからメソッドを作成しようとしています。
$.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 メソッドでオプションを渡す簡単な方法はありますか?