0

「Jquery Third Edition の学習」で、次の行を見つけました。

ウィジェットを破棄しています.... .myWidget('destroy') を呼び出すと、ページから myWidget ウィジェットが削除されます。ほとんどの作業はウィジェット ファクトリが行いますが、(ここで行ったように) _create 内のドキュメントの一部を変更した場合は、自分でクリーンアップする必要があります。

ただし、新しいウィジェットを作成するとき、_create 関数を変更しない状況は想像できません。その例を教えてください。

4

2 に答える 2

1

メソッドを変更したかどうかではなく、メソッド_create内のドキュメント_create(またはそのメソッド) を変更したかどうかを示しています。

ベースの destroy メソッドは、次のような多くのことを行います。

  • this.elementウィジェットの下でネームスペース化されているルート要素にアタッチされたイベントをバインド解除します。
  • 要素の jQuery データ ストアからインスタンスを削除します。
  • ウィジェット ファクトリがウィジェットのライフ サイクル中に追加した可能性のあるすべてのクラスを削除します。

これを超えるものは、destroy メソッドを拡張してウィジェット自体でクリーンアップする必要があります。たとえば、ドキュメントに追加された要素を削除したり、ノード以外のノードにバインドされたイベントをアンバインドしたりしthis.elementます (サイズ変更またはスクロール イベントをウィンドウまたはドキュメントなど)

于 2013-02-03T11:25:43.333 に答える
0

上記のように。_create 関数で作成/アタッチされた DOM 操作またはイベントはすべて、destroy 関数で削除されるという考え方です。

私が作成したコントロールの変更例を添付しました: http://pastebin.com/M9CzUajs

このリンクは、特に添付されたイベントが破棄でどのように元に戻されるか、および CSS の変更もどのように再適用されるかを示しています。これは、元の要素が隠されているプログレッシブ エンハンスメントの例では非常に一般的です。

于 2013-02-03T11:45:11.260 に答える