Ich habe eine Klasse in JavaScript, die einige Funktionen hat. Zwei von ihnen sollen den Text einer Schaltfläche und ihres Onclick-Ereignisses ändern. Ich habe versucht, es selbst zu tun, aber ich stoße auf ein zirkuläres Referenzproblem. Ich glaube, ich habe etwas zu verwenden, wie „prevent()“, aber ich konnte es nicht verwenden ...Circular Referenz mit Javascript klicken Ereignis
Folgen Sie meine Funktionen der Klasse:
this.add_person = function(row, btn) {
$(btn).parent().parent().addClass("selected_row");
$(btn).text("-");
$(btn).attr("onclick", function(e) {
//e.preventDefault();
$.adfg.tabs.del_person(row, btn);
});
}
this.del_person = function(row, btn) {
$(btn).parent().parent().removeClass("selected_row");
$(btn).text("+");
$(btn).attr("onclick", function() {
//$.adfg.tabs.add_person(row, btn); it starts to call the other function and the circular reference to the functions starts...
});
}
Und hier ist die Taste
'<a class="btn btn-info btn-sm" onclick=$.adfg.tabs.add_person(' + meta.row + ',this)>' + '+' + '</a>'
Warum verwenden Sie .attr() Ihre Veranstaltungen zu binden? – n00dl3
Warum ändern Sie das Onclick-Attribut, anstatt Event-Handler anzuhängen und abzutrennen? – SpoonMeiser
Nun, ich wusste nicht, wie man dem Link ein Ereignis hinzufügt, weil es von einer API gerendert wurde. Also habe ich ein onclick-Ereignis hinzugefügt und deshalb habe ich versucht, es zu ändern. Aber wie ihr sagt, scheint es eine schlechte Idee zu sein. Ich bin neu in JS und ich versuche immer noch, die guten und schlechten Ansätze herauszufinden. Danke für die Rückmeldung – mk2