1 回答
TA贡献1842条经验 获得超12个赞
这是因为您在每次单击时重新创建按钮 HTML 内容,这会删除所有附加的事件侦听器。您可以在单击后重新附加它们,或者通过修改现有元素来代替 HTML 内容调整按钮状态。
这是工作版本
class Utilities {
selectedSession = "Second";
constructor () {
const self = this;
this.init();
this.manage();
$("button").on("click", function(e) {
self.message("Button click: switching to " + this.value + ".");
self.selectedSession = this.value;
self.manage();
});
}
manage(){
this.message("Manage: " + this.selectedSession + " is selected.");
var buttons = $("button")
for(var x = 0; x < buttons.length; x++){
var button = buttons[x]
if(button.value === this.selectedSession){
button.style.backgroundColor = "gray"
} else {
button.style.backgroundColor = ""
}
}
}
init() {
const self = this;
const sessions = [ "First", "Second", "Third", "Fourth", "Fifth" ]
var code;
$("#picker").empty();
sessions.forEach(function(entry) {
var buttonHtml = `<button type='button' value='${entry}' >${entry}</button>`
$("#picker").append(buttonHtml);
});
$("#content").text($("#picker")[0].outerHTML);
}
message(text) {
if ($("#messages").text() != "") { $("#messages").append("<br>"); }
$("#messages").append(text);
}
}
test = new Utilities();
添加回答
举报