Во-первых, вы должны убедиться, что любые id
s, которые есть в DOM , являются уникальными .Прямо сейчас вы постоянно используете id="btnSave"
, id="attendance"
и id="loan"
в таблице.Но ваш обработчик кликов настроен правильно (с использованием делегирования и .item-edit
), и, насколько я могу судить, вы можете просто избавиться от этих идентификаторов.
В обработчике кликов используйте this
или event.currentTarget
для ссылки на кнопку, на которую нажали.Вы можете получить строку для этой кнопки, используя closest("tr")
.Затем вы можете найти данные о посещаемости и ссуде через find
, используя их name
s.
Так, например:
$(function() {
$('#salaryData').on('click', '.item-edit', function() {
var row = $(this).closest("tr");
var attendance = row.find("[name=attendance]").val();
var loan = row.find("[name=loan]").val();
alert(attendance);
});
});
Live Пример:
$(function() {
$('#salaryData').on('click', '.item-edit', function() {
var row = $(this).closest("tr");
var attendance = row.find("[name=attendance]").val();
var loan = row.find("[name=loan]").val();
alert(attendance);
});
});
var data = [
{emp_name: "Joe Bloggs", cat_name: "cat1", emp_account_number: 1234},
{emp_name: "Muhammad Al-Rashad", cat_name: "cat2", emp_account_number: 5678},
{emp_name: "Elena Gonsalez", cat_name: "cat2", emp_account_number: 9876}
];
// alert('test');
var html = '';
var i;
for (i = 0; i < data.length; i++) {
html += '<tr>' +
'<td>' + data[i].emp_name + ' </td>' +
'<td>' + data[i].cat_name + '</td>' +
'<td>' + data[i].emp_account_number + '</td>' +
'<td>' +
'<input type="text" class="form-control" name="attendance" placeholder="Attendance" required>' +
'</td>' +
'<td>1</td>' +
'<td>' +
'<input type="text" class="form-control" name="loan" placeholder="Loan" required>' +
'</td>' +
'<td>' +
'<a href="javascript:;" class="btn btn-primary item-edit">Submit</a>' +
'</td>' +
'</tr>';
}
$('#salaryData').html(html);
<div id="salaryData"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>