2016-06-25 21 views
0

HTMLページに何百もの送信ボタンがあるとしましょう。送信ボタンをクリックすると、Webサーバーに情報を送信するためにjQuery.post()を使用するTiedotNettiinというJavaScript関数が呼び出されます。何百回もaddEventListenerを呼び出す

JavaScriptとそのaddEventListenerを何百回もHTMLページで使用することをお勧めしますか?これには多くのシステムリソースが必要ですか?

または、インターバルを設定してJavaScript機能TiedotNettiinを実行する方がよいでしょうか、言い換えれば、10秒ごとですか?それは10秒待ってから10秒以内にすべてのクリックを収集し、配列を作成し、最終的にすべての新しい情報を配列にサーバーに送信します。これは、すべての送信ボタンのクリックではなく、10秒ごとに発生します。

もっと良い選択肢はありますか?

ご意見、ご感想ありがとうございます。

+1

使用イベントの委任を行うことを確認してください。すべての送信ボタンを含む要素を選択し、 'container.addEventListener(" click "、function(e){' ... '});'を呼び出します。 'e'を使うと' e.target'にアクセスしてどのボタンがクリックされたのかを知ることができます。 – Xufox

+0

フォームを送信する要素に同じ 'className'を指定することができます。単一のイベントリスナー' $( "。submit")を使用します。クリック(){// do stuff}) ' – guest271314

+0

あなたはサーバーに連絡する必要があるかどうか尋ねているようです1回のクリックごとに、またはグループ内のクリックを集計します。どちらの方法でもクリック数を把握する必要があるため、イベントリスナーの数は同じになります。 – Oriol

答えて

1

1つの委任されたリスナーで十分な数のイベントリスナーは必要ありません。

は、すべての要素が同じクラスを持っていると

$(document).on('click', '.button-class', function(event){ 
    event.preventDefault(); 
    /* "this" is element event occured on */ 
    // do ajax with data relevant to this button 

}) 
関連する問題