Почему нажатие кнопки срабатывает более одного раза в jquery
ПРИВЕТ,
у меня есть html-таблица с кнопкой редактирования строки.когда я нажимаю на кнопку, она вызывает функцию morw более одного раза. например, если я нажимаю 2-ю строку, она дважды вызывает функцию.
вот мой код:
if (rowCnt === 0) { $("#tblDetails tbody").append( "<tr>" + "<td id='Items" + rowCnt + "'>" + prty + "</td>" + "<td id='dstr'>"+ districtname + "</td>" + "<td id='nmindar'>" + industrialarea + "</td>" + "<td id='plno'>"+ newStr + "</td>"+ "<td><img src='images/edit.jpg' class='btnEdit'><img src='images/delete.png' class='btnDelete'/></td>" + "</tr>"); } else { var dupCount = 0; for (var i = 0; i < rowCnt; i++) { var num = $("#Items" + i).html().toString(); if (id == num) { dupCount++; } } if (dupCount === 0) { $("#tblDetails tbody").append( "<tr>" + "<td id='Items" + rowCnt + "'>" + prty + "</td>" + "<td id='dstr'>" + districtname + "</td>" + "<td id='nmindar'>" + industrialarea + "</td>" + "<td id='plno'>" + newStr + "</td>" + "<td><img src='images/edit.jpg' class='btnEdit'><img src='images/delete.png' class='btnDelete'/></td>" + "</tr>"); } } $(".btnEdit").bind("click", edit_rows); $(".btnDelete").bind("click", Delete); } $('#Plotinfo').jqxGrid('clearselection'); } else { alert("Please select plots") } }); // return the new pager element. return element; } //edit row in table function edit_rows() { var address = []; $(this).closest('tr').find('td').not(':last').each(function () { var textval = $(this).text(); // this will be the text of each <td> address.push(textval); }); alert(address[0]); alert(address[1]); alert(address[2]); alert(address[3]); }; //delete row in table function Delete() { var par = $(this).parent().parent(); //tr par.remove(); };
если я нажимаю на 1-ю строку, я получаю предупреждение 3 раза.если я нажимаю на 2-ю строку, я получаю предупреждение дважды.и если я нажимаю на 3-ю строку, я получаю предупреждение один раз.
может ли кто-нибудь сказать мне, почему я становлюсь таким
Что я уже пробовал:
//var par = $(this).parent().parent(); //tr var tdprty = par.children("td:nth-child(1)"); var tddstr = par.children("td:nth-child(2)"); var tdindname = par.children("td:nth-child(3)"); var tdplno = par.children("td:nth-child(4)"); alert(tddstr.html()); alert(tdindname.html()); alert(tdplno.html());
Peter Leow
Как диагностировать, если вы показываете только фрагмент кода? Нажмите кнопку "улучшенный вопрос", если вам действительно нужна помощь.
pjaar89
Как вы связываете событие click? Вы забыли поделиться с нами самой важной частью :)
Veena Hosur
$(".btnEdit").персонализация("клик", edit_rows);
функция edit_rows() {
адреса ВАР = [];
$(этот).ближайший('тр').найти('тд').не(':последний').каждый(функция () {
var textval = $(this). text (); / / это будет текст каждого
address. push(textval);
});
предупреждение (адрес[0]);
предупреждение (адрес[1]);
предупреждение (адрес[2]);
предупреждение (адрес[3]);
};
F-ES Sitecore
Вы должны использовать jsfiddle, чтобы предоставить рабочий пример, однако проблема, вероятно, связана с таким кодом
$(".btnEdit").персонализация("клик", edit_rows);
вы связываете событие щелчка для каждого элемента с этим классом каждый раз, когда вызываете этот код, поэтому, если он вызывается более одного раза, то все получает еще одно событие щелчка, поэтому, если он вызывается три раза при создании элементов в цикле, первый элемент с этим классом будет иметь три события щелчка, вторые два и последнее, потому что первый элемент получает дополнительный щелчок, даже когда вы вызываете код во второй раз, и третий, когда вы вызываете его в третий раз.
Veena Hosur
http://jsfiddle.net/x34fseh3/5/
если я даю предупреждение в кнопке удаления, то происходит то же самое
Veena Hosur
для каждой строки Я хочу кнопку, чтобы