Циклическая ссылка с помощью события click javascript

У меня есть класс В JavaScript, который имеет некоторые функции. Два из них предназначены для изменения текста кнопки и ее события onclick. Я пытался сделать это сам, но столкнулся с проблемой циркулярной ссылки. Я считаю, что я должен использовать что-то вроде «preventDefault ()», но я не мог использовать его.

Следуйте моим функциям класса:

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...
    });
}

А вот кнопка

'<a class="btn btn-info btn-sm" onclick=$.adfg.tabs.add_person(' + meta.row + ',this)>' + '+' + '</a>'

1 ответ

  1. Почему бы не попробовать что-то вроде этого?

    Нет необходимости возиться с изменением clickсобытия и просто проверять состояние при каждом вызове.

    '<a class="btn btn-info btn-sm" onclick=$.adfg.tabs.add_delete_person(' + meta.row + ',this)>' + '+' + '</a>'
    
    this.add_delete_person = function(row, btn)
    {
        // if the text is equal to a minus then we're deleting
        if($(btn).text() == "-")
        {
            $(btn).parent().parent().removeClass("selected_row");
            $(btn).text("+");
        }
        // else we're adding
        else
        {
            $(btn).parent().parent().addClass("selected_row");
            $(btn).text("-");
        }
    };