Próbuję utworzyć tabelę, która tworzy wiersze przy użyciu ajax. problemem jest to, że kiedy przydzielony słuchacza „kliknąć” na podstawie nazwy klasy jest uzyskiwanie nazywany stwardnienie czasDetektor "kliknięcie" zostanie wykonany wielokrotnie
mój kod jest
function fn_getAlertRules(parentRowId) {
$.ajax({
type: "GET",
url: anyURL,
contentType: "application/json",
dataType: "json"
}).done(function(data) {
// create row to add to parent table's row
var s_rulesHtmlString = '<tr><td colspan="3" class="rules-parent-tr"><table><tbody>';
$.each(data, function(i, name) {
s_rulesHtmlString += '<tr class="rule-tr">';
s_rulesHtmlString += '<td class="eventid-td">Rule ID:'+ name.RuleId+'<span>' + name.OccuredEventId + '</span></td>';
s_rulesHtmlString += '<td>' + name.Name + '</td><td>' + name.RuleDate + '</td>';
s_rulesHtmlString += '</tr>';
});
s_rulesHtmlString += '</tbody></table></td></tr>';
// add row below parent tr
$(parentRowId).parent().after(s_rulesHtmlString);
$(".rule-tr").on("click", "td", function(event) {
// this code blocks get executed multiple times
});
});
}
może ktoś proszę mi powiedzieć, dlaczego ona jest uzyskiwanie nazywany stwardnienie czas ?
Ile razy dzwonisz tę funkcję? – JJJ
fn_getAlertRules zostaje wywołany tylko jeden raz! tylko kod wewnątrz .on ("kliknięcie") jest wywoływany tyle razy ile jest obecnych wierszy –
Wzorzec '$ (". rule-tr "). on (" click "," td ", function (event)' zastąpił stare wydarzenie 'live', które zostało użyte do powiązania z elementami nawet po zmianie drzewa domena.Tak, na każdym wywołaniu ajaxowym dodajesz słuchaczy do zdarzenia' kliknij' raz za razem. – Candide