Я пытаюсь найти способы сделать мою функцию более динамичной c с помощью l oop. Я понимаю, как можно упростить использование слушателя событий onclick. Но так как я звоню, используя ajax, это довольно запутанно. Я полагаю, это будет очень грязно, если я введу 3 setTimeout в функции.
const eventHandler = function(){reverse.click(function(){
setTimeout(function(){
updateDATA();
$("#" + arcapi.chartId() + " tbody td .crosstab-collapse").click(function(){
setTimeout(function(){
updateDATA();
},0);
})
},0)
})
}
eventHandler()
Примечание. Требуется сначала загрузить dom и выбрать элемент в течение времени ожидания, поскольку DOM перезаписывается новым элементом. Я думал о создании функции, которую можно будет вводить сколько раз она будет запускаться, например
function setFunc(number){
for(let i = 1 ; i < number; i++){
onst eventHandler = function(){reverse.click(function(){
setTimeout(function(){
updateDATA();
},0)
})
}
}
setFunc(3)
можно ли этого добиться?
ОБНОВЛЕНО
То, чего я пытаюсь добиться, это то, что когда пользователь нажимает кнопку, JS нужно будет снова захватывать элементы dom. см. псевдокод ниже
// User will click
$("#" + arcapi.chartId() + " tbody td .crosstab-collapse").click(function(){
//After table is refresh after ajax call, new dom will overwrite, need timer
setTimeout(function(){
console.log($("#" + arcapi.chartId() + " tbody td .crosstab-collapse"))
},0)
})
// Потребуется перезапустить код, как только пользователь снова нажмет кнопку, поскольку DOM всегда будет перезаписываться новыми элементами DOM.
Заключение Я решил проблему, добавив функцию в функцию, каждый раз, когда функция срабатывает, она будет продолжать вызывать одну и ту же кнопку
function reverseData(){
$("#" + arcapi.chartId() + " tbody td .crosstab-collapse").click(function(){
setTimeout(function(){
updateDATA()
reverseData()
},0)
})
}
//main rever event handler , initial load
$("#" + arcapi.chartId() + " tbody td .crosstab-collapse").click(function(){
setTimeout(function(){
updateDATA()
reverseData()
},0)
})