0

私はajaxでページをロードし、ページのjavascriptコードもロードしています。

jquery ライブ バインド イベントが含まれているページの JavaScript コードを削除すると、バインディングが強制終了されるのでしょうか、それとも $(this).die(); を呼び出す必要があるのでしょうか。関数?

jqueryライブバインドイベント

jQuery(function($) {

    $('.showNavLink').live('click', function() {

    });
});

Ajax ページ フロー

  • ホームページが読み込まれました
  • ホームページのJavaScriptがロードされています
  • ユーザーが新しいページの読み込みを要求しました (クリック時)
  • JavaScript を使用してホームページのコードを削除する
  • JavaScript コードの削除
  • 新しいページを読み込んでいます... (最初のステップでサイクルを開始します)。
4

3 に答える 3

2

Javascript ソース コードを削除しても、そのコードから作成された Javascript 関数オブジェクトは削除されません。

イベント ハンドラがイベントを処理しないようにするには、イベント ハンドラのバインドを解除する必要があります。

于 2012-10-24T16:53:33.837 に答える
2

$.livehttp://api.jquery.com/live/は非推奨です。ただし、使用している場合は削除する必要があります。ページを更新することはないと思います。スクリプト タグを削除しただけでは、スクリプトの実行時に行ったすべての操作が取り消されるわけではありません。

新しい方法は

$(document).on('click', '.showNavLink', function() {});

不要になったら

$(document).off('click', '.showNavLink');
于 2012-10-24T16:55:27.970 に答える
2

要素を削除すると、対応する要素のすべてのイベントの関連付けが解除されます。

要素を削除しても、イベントを削除しないとメモリ リークが発生する可能性があります。そのため、明示的に呼び出す方がよいでしょう。.die()

また

As of jQuery 1.7, use of .die() (and its complementary method, .live())
is not recommended. Instead, use .off() to remove event handlers bound with .on()
于 2012-10-24T16:48:24.267 に答える