私はオプションを受け入れるプラグインを持っています。このような感じです。 somevalue
のいずれかの値、コントロールID、または機能とすることができるjqueryプラグイン、マルチタイプ(値、コントロールID、関数)のオプション
$('#myObject').myPlugin({
option1: someValue
});
。
私は私のプラグインの内側に、私は、ユーザーが自分の空の設定で渡すものをマージするためにこれを使用し、その後、この
var settings = {
option1: null
};
のように定義されたデフォルト設定を持っている。これは、時に正常に動作します
if (options) {
$.extend(settings, options);
}
オブジェクトオプションはコントロールのIDまたは値です。
私はこの
$('#myObject').myPlugin({
option1: function(){ return doStuff(); }
});
$.extend()
のような機能を使用するときに私の最初の問題はあるが、この場合の機能を無視しているようです。 settings
のデフォルト値は、常にパーサーに渡されます。私はまた、コントロールIDの代わりに値を渡すときに問題を抱えています。私は$('#' + value)
は真と評価、私は日付や小数を渡す場合は、この
function parseValue(value, defaultValue) {
if ($.isFunction(value))
return value();
if (!value)
return defaultValue ? defaultValue : '';
if ($('#' + value))
return $('#' + value).val();
return value;
};
のような値を取得するには、設定を解析します。
どのように私はこの作品を作成する上でのアイデアですか?
EDIT:
これは間違っているかもしれないが、これは私が私のプラグインを定義した方法です。実際にはプラグインの集まりです
(function ($) {
//shared methods here
function parseValue(value, defaultValue) { /*...*/ }
$.fn.myplugin = function (options) {
var settings = { };
$(this).live("submit", function (event) {
//NEVER EVER EVER allow the form to submit to the server
event.preventDefault();
//logic for "posting" cross domain
});
};
$.fn.myplugin2 = function (options) {
var settings = { };
$(this).live("submit", function (event) {
//NEVER EVER EVER allow the form to submit to the server
event.preventDefault();
//logic for "posting" cross domain
});
};
})(jQuery);
プラグインはフォームをハイジャックし、jsonp get要求によってクロスドメインをサブミットします。各プラグインは異なるデータを別のURLに提出しますが、全体的なロジックは同じです。
私は全く違った方法でプラグインを作りました。たぶん私はそれを構築する方法が間違っている。 – Josh
ああ、どういうわけか私はあなたがjQueryウィジェットフレームワークを使用していなかったことを忘れていました。あなたはそれを使うことを検討すべきです。一般的な作業がずっと簡単になります。 – Jacob
私はプラグインを宣言している方法で質問を更新しました。 – Josh