使用javascript点击事件的循环引用

Circular reference using javascript click event

本文关键字:循环 引用 事件 javascript 使用      更新时间:2023-09-26

我在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>'

为什么不试试这样的东西?

无需更改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("-");
    }
};