0

私は完成間近のサイトを持っており、現在いくつかの小さなバグを修正中です。開発ページはこのページにありますが、使用されている jquery プラグインのいくつかに少し問題があります。

サイトの主要部分は永続的で、ページ コントローラーを使用して ajax ナビゲーションとプラグインのインスタンス化を処理します。ただし、サイトを数回クリックした後、つまりページから離れて戻った後、ページ関数が再度呼び出されると、それらが壊れてすべての JavaScript が停止することがわかりました。

現在アクティブな定義済みの「アクティブなイベント」をクリアすることは可能でしょうか。魚を飼った後、変数を割り当ててからその変数に関数を与えるという風に気付きましたが、魚はいませんでした。例を使用するには、次の単純化されたものを無効にするにはどうすればよいですか。

$('#carousel-awards').infiniteCarousel();
$('#another-test').timelinr();

これらは、「シャットダウン」のためのメソッドが組み込まれていない 2 つの jquery プラグインです。要するに、ユーザーが上記の 2 つの関数を使用するページから移動すると、そのページの HTML が一時的に無効になるため、一種のガベージ コレクターが必要です。

わかりやすくするために、次のことを試しました。

1. $('#carousel-awards').unbind('infiniteCarousel');

2: $('#carousel-awards').off('infinitCarousel');

3: $('#carousel-awards').infiniteCarousel = function() { return false; }

4: var test;
   test = $('#carousel-awards').infiniteCarousel();
   test = function(){ return false; }

私の質問を読んでくれてありがとう

4

2 に答える 2

1

プラグインに依存します。ただし、jQuery UI ウィジェット システムを使用している場合は、それらのウィジェットを使用して要素から削除することができ.infiniteCarousel('destroy')ます.timelinr('destroy')

于 2012-09-17T10:46:40.597 に答える
0

これらのプラグインについてはよくわかりませんが、通常.remove()、要素を呼び出すと、添付されたハンドラー、データオブジェクトなども削除されます。それらをガベージコレクション可能にします。

通常、プラグイン、特にデータを別の場所に保存したり、別の場所に DOM 要素を作成したりするプラグインは、destroyオプションを提供します。プラグインがない場合は、a) 必要ないか、b) プラグインが適切にコーディングされていない - 掘り下げて修正するか、別のものを使用する必要があります。

于 2012-09-17T10:53:37.173 に答える