node.js勉強中です。
サーバーからの通信によってクライアント側に動的にHTMLを記述するのですが、想定では1回しか呼ばれないconsole.logが複数回呼ばれているようです。chromeのデベロッパーツールにてコメントの左に数字が付きます。
javascript
1socket.on('message', function(id,grade,set,number,name,name2,sex,el1,el2,el3,num) { 2 $('#tb').prepend($('<tr id="bar"></tr>')); 3 $('#bar').append($('<td><button type="button" class="btn btn-light btn-x" id="btn' + num + '">ボタン</button>')); 4 ++Num; 5 $('#bar').append($('<td>').text(grade)); 6 $('#bar').append($('<td>').text(set)); 7 $('#bar').append($('<td>').text(number)); 8 $('#bar').append($('<th>').text(name)); 9 $('#bar').append($('<th>').text(name2)); 10 $('#bar').append($('<td>').text(sex)); 11 $('#bar').append($('<td><button type="button" class="btn btn-info btn-x">ボタンその2</button>')); 12 $('#bar').append($('<td>').text("")); 13 $('#bar').append($('<td class="id" style="display:block;">').text(id)); 14 15 $("[id^=btn]").on("click",function(){ 16 console.log(1, "テストです") 17 }); 18 });
サーバーからは30~40個程度の回数通信がきて、縦方向に「ボタン」が動的に追加されます。送られてくるnumは一つずつ加算されて送られてきますのでボタンのidは上からbtn40,39,38,と名付けられています。
一番上のボタンを押すと「テストです」は1回、2個目をクリックすると2回、40個目をクリックすると40回呼ばれているようです。クリックした要素のidをattrで拾って確認しましたが、きちんと押している要素は捕捉している様子。
これはいったいなにが原因なのでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/06 13:34