0

順序付けられていないリストがあります。ユーザーが項目をクリックすると、関数が呼び出されます。イベントを使用して$(document).ready()、関数をリスト項目にバインドしました。

$('#list').html()私が抱えている問題は、メソッドを使用して(AJAXを使用して)リストの内容が時々置き換えられることです。これは、各アイテムのバインディングが失われることを意味します。

関数を(アイテムではなく)リストにバインドしようとしました。thisこれは、クリックされたアイテムではなくリストへの参照であることを除いてthis、正常に機能し、関数で使用しています。

私が見るオプションは次のとおりです。

  1. リストの内容が再ロードされた後、関数を各項目に再バインドします。これは、ブラウザがしなければならない多くの作業のように思えます。
  2. 関数を (リスト項目ではなく) リストにバインドし、そこからクリックされたリスト項目を参照する方法を考え出します。

どちらを使用しますか? どのように?より良い方法はありますか?

ありがとう!

4

1 に答える 1

1

あなたが言及した2番目のポイントはイベントの委任と呼ばれ、ここでの良い解決策になるでしょう. 幸いなことに、jQuery を使用すると、イベントの委譲が非常に簡単になります。

$('#myList').on('click', 'li', function(){
    // `this` refers to the clicked `li` element
});

jQuery が参照を計算します。つまり、イベント ハンドラー内では、クリックされた要素 (2 番目のセレクターに一致する要素)thisが参照されます。li

jQuery を使用した直接および委任されたイベント処理の詳細をお読みください。

于 2013-02-08T02:43:24.060 に答える