jQueryプラグインの内部メソッドの呼び出しに関するヘルプ[終了]
-
05-07-2019 - |
質問
プラグインを作成して、ページ。ソースは利用可能です。
最初のリンクのインラインJavaScriptを見ると、表示バーの挿入を処理するカスタムtextPlacement関数を作成しています(スタックオーバーフローのように見えます)。
ご覧のとおり、挿入されたボタンにイベントハンドラがあります。バーの削除をコーディングしましたが、用語の強調表示も削除したいと思います。プラグインには、これを行うための toggleTermHighlighting()
というメソッドがあります。
サンプルページの匿名関数内からそのメソッドを呼び出すにはどうすればよいですか? this.toggleTermHighlighting = function(){}
にする必要がありますか。このインスタンスを最初の引数に渡そうとしましたが、機能させることができませんでした。
申し訳ありませんが、私は常にJavaScriptのスコープで苦労しています。
サンプルページの匿名関数内からそのメソッドにアクセスできるようにするために私ができることを誰か知っていますか?
解決
プラグイン内で関数が定義される方法を再構築すると、かなり簡単になると思います。
128行目を変更:
var toggleTermHighlighting = function() {
to:
this.toggleTermHighlighting = function() {
次のようにして、まったく異なるスコープから関数にアクセスできます。
var myPlug = new $.fn.searchTermsHighlight();
myPlug.toggleTermHighlighting();
これはあなたの質問に対する答えになりますが、別のアプローチがより適切かもしれないと思います。多くのjQuery UIコードを見ると、文字列をプラグインに渡すことができ、関数が実行されます。したがって、実際には次のようなことができます。
$('body').searchTermsHighlight('toggle');
そして、あなたの関数の上部、またはinit()型の関数でそれをチェックします
if (options === 'toggle'){ toggleTermHighlighting(); return this; }
他のヒント
" toggleTermHighlighting"を作成する必要があります。それ自体で公開されたjQuery関数、または既存のメソッドのオプションとしてその機能を公開します。さて、少し奇妙なことをしたい場合は、影響を受けるオブジェクトのデータ要素に関数(および好きなもの)を詰め込むことができます(jQueryの「データ」関数を参照してください)。