JQuery по нажатию кнопок функция инкрементно срабатывает

97
31 марта 2022, 05:30

Создаю в js таблицу, где в одной из колонок в каждой строке создаю кнопки.

<input class="buttons" value="Delete" onclick="delRowOfTable();" type="button">

Эти кнопки по нажатию, должны получить номер строки в которой они находятся:

function delRowOfTable() { 
  $(document).ready(function(){ 
    $('tr').one( 'click',function(){ 
      alert(this.rowIndex+1); 
    }); 
  }); 
}

Когда нажимаю одну из кнопок, всё срабатывает правильно и выдаёт правильный результат. Но когда нажимаю другую кнопку функция срабатывает два раза, т.е. алерт вылазит 2 раза, нажимаю 3ю кнопку - алерт вылазит 3 раза и т.д.
Как это пофиксить?

Добавил это в код, теперь всё отрабатывает по одному разу, вроде всё ок

 $( 'tr').unbind( "click" );

Answer 1

Обработчик событий нужно повесить только один раз, сразу после загрузки

HTML

<table>
  <tr line_number=1>
    <td>
      <input class="buttons delbutton" value="Delete" type="button">
    </td>
  </tr>
  <tr line_number=2>
    <td>
      <input class="buttons delbutton" value="Delete" type="button">
    </td>
  </tr>
  <tr line_number=3>
    <td>
      <input class="buttons delbutton" value="Delete" type="button">
    </td>
  </tr>
</table>

JS

  $(document).ready(function(){
    $('.delbutton').on('click', delRowOfTable);
  });
   function delRowOfTable() {
     alert( $(this).parent().parent().index());
   }

https://jsfiddle.net/Poul_WWJD/g74fytqw

READ ALSO
Ошибка в DevTools

Ошибка в DevTools

Первый раз выскочило предупреждение в DevTools :

183
Как разбить цифру в числа

Как разбить цифру в числа

Есть число 8 на входе, нужно чтобы на выходе было 1,2,3,4,5,6,7,8, пробовал через цикл не получилось

103
KendoUI: Не происходит запуск функции из template

KendoUI: Не происходит запуск функции из template

Использую библиотеку KendoUI JqueryСоздал класс JS:

88
unity3D вращение объекта

unity3D вращение объекта

Неделю назад начал изучать движок Unity, сейчас не могу разобраться с вращениемДопустим есть стрелка (представьте, например, стрелку спидометра),...

111