我有一个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>'
答案 0 :(得分:0)
为什么不尝试这样的事情?
无需更改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("-");
}
};