プラグインオーサリングのjqueryドキュメントを読み、それに精通しています。ただし、与えられた例は常に、以前に一致した要素のセットで動作します。次の両方を実行できる関数を作成したいと思います。
// example usage of my to-be-created plugin function
// this is the way described in the docs, and I know how to do that
$("a").myFunction ()
// but I also want to be able to call the function without a collection:
$.myFunction ();
操作するコレクションなしでが呼び出された場合$.myFunction ()
、一致する要素の独自のコレクションが作成されます。これは一種の初期化プロセスです(ただし、必ずしも1回だけ実行する必要はありません)。また、$.myFunction ()
連鎖性を維持する必要があります。
私が達成したいことの擬似コード:
// [...]
function myFunction (): {
if (notCalledOnACollection) {
// this should run when called via $.myFunction ()
$elements = $("a.myClass");
}
else {
$elements = $(this);
}
return $elements.each (function () {
// do sth. here
});
}
私は本当にすべての関数の実装/機能を単一の関数定義内に保持し、jQueryオブジェクト内の2つの別々の場所に2つの別々に名前が付けられた関数または2つの同じ名前の関数を持たないようにしたいです。
そしてもちろん、実行するステートメントmyFunction (do_init)
のブランチを示すパラメーターを追加することもできますif
が、それは私の引数リストを乱雑にします(複数のプラグインにそのアプローチを使用したいのでmyFunction ()
、簡単にするためにここで省略した引数があります)。
何か良い提案はありますか?