我有一個(gè)顯示自定義對(duì)話框的按鈕。如果用戶選擇“取消”,則應(yīng)從DOM中刪除該對(duì)話框,并且不采取進(jìn)一步的措施。如果他們單擊“開始刪除”,則應(yīng)繼續(xù)輸入代碼。對(duì)話框正確顯示和隱藏,但是,當(dāng)我取消并隱藏對(duì)話框后,該按鈕將不再起作用以再次顯示該對(duì)話框。我創(chuàng)建了一個(gè)使用模板字符串顯示彈出窗口的彈出窗口類,然后將其注入到DOM中。彈出窗口在構(gòu)造函數(shù)中接受一個(gè)回調(diào),我用它來隱藏彈出窗口。請(qǐng)參閱以下JS小提琴:https : //jsfiddle.net/khgriffi259/vs6r5ake/13/ class Popup { constructor(title, message, callback) { this.title = title; this.message = message; this.callback = callback; this.container = document.querySelector('body'); this.result = ''; } init() { const popup = ` <div class="popup-wrapper"> <div class="popup bg-white p-1"> <div class="popup-close">X</div> <div class="popup-content "> <h2 class="">${this.title}</h2> <p class="p-1 my-2">${this.message}</p> <div class="dialogue_buttons my-1"> <button class="btn popup-no" >Cancel</button> <button class="btn btn-danger my-1 popup-yes" >Start Delete</button> </div> </div> </div> </div> `; this.container.innerHTML += popup; this.container.querySelector('.popup-no').addEventListener('click', () => this.cancelListener()); this.container.querySelector('.popup-yes').addEventListener('click', () => this.startListener()); } cancelListener() { this.result = false; this.callback(); // if (this.callback !== undefined) { // this.callback(this.result); // } } startListener() { this.result = true; if (this.callback !== undefined) { this.callback(); } } getResult() { console.log(this.result) ; return this.result; } }我希望彈出窗口能夠隱藏,并且如果用戶再次單擊該按鈕,則該按鈕將具有功能以生成新的彈出窗口。
我一次使用后所有按鈕都失去功能
藍(lán)山帝景
2021-05-19 13:15:14