4 回答
TA贡献1847条经验 获得超11个赞
可以仅使用名称,并使用属性来获取当前按钮。
然后在单击处理程序中,您通过名称知道单击了哪个按钮。this
像这样:
class Button {
constructor(name) {
this.name = name;
this.element = this.create();
}
create() {
const element = document.createElement("button");
element.innerHTML = `<div>${this.name}</div>`;
element.addEventListener('click', this.yell.bind(this))
document.body.appendChild(element);
return element;
}
yell() {
alert('You have hit the '+this.name);
}
}
const buttonA = new Button('Button A');
const buttonB = new Button('Button B');
一些注意事项:
我使用了新的ES6同轴(不需要时没有var或让)
我没有使用 jquery(这个例子很容易在纯 JavaScript 中完成)
我用作点击的直接处理程序,为了有好的我必须绑定它
this.yell
this
我需要 yell 函数中的属性才能知道名称,这就是我删除 static 关键字的原因。
this
TA贡献1900条经验 获得超5个赞
我相信有一个更优雅的解决方案,但这个有效。
class Button {
constructor(name) {
this.target = 'bullseye';
this.name = name;
this.element = this.create();
}
create() {
var buttone = document.createElement("div");
buttone.innerHTML = this.name;
document.body.appendChild(buttone);
let _name = this.name;
buttone.addEventListener('click', function(e) {
Button.yell(_name);
});
return buttone;
}
static yell(element){
alert('You have hit the '+element);
}
}
let buttonA = new Button('Button A');
let buttonB = new Button('Button B');
TA贡献2003条经验 获得超2个赞
这应该有效!您已经有一个接受该元素的函数 (按钮.yell)。
button_element[0].addEventListener('click', Button.yell);
TA贡献1798条经验 获得超7个赞
我对此的理解是,您希望警报说出“按钮A”或“按钮B”一词。
button_element[0].addEventListener(
'click',
(e) => Button.yell(this.name)
);
请注意,我使用的是箭头函数语法 ()而不是函数语法。这样做的原因是,如果使用函数语法,则处理程序函数中的值将不同。=>this
添加回答
举报