我可以将事件侦听器与相同的目标元素组合在一起吗?

时间:2014-06-09 18:23:01

标签: javascript events

...和回调方法?

input_element.addEventListener("paste", self.hide, false);
input_element.addEventListener("keypress", self.hide, false);
input_element.addEventListener("drop", self.hide, false);

到类似的形式 -

input_element.addEventListener("paste keypress drop", self.hide, false);

我检查了MDN并且API不支持此表单,但可能还有其他方法吗?

2 个答案:

答案 0 :(得分:3)

几年后,我不知道问题中的例子和我写的内容之间的区别,所以这里有更新

["paste", "keypress", "drop"].forEach(event => input_element.addEventListener(event, self.hide, false));

原始回答

首先想到的是

function hide(){
    self.hide();
}

input_element.addEventListener("paste", hide, false);
input_element.addEventListener("keypress", hide, false);
input_element.addEventListener("drop", hide, false);

答案 1 :(得分:1)

明显的DRY点是将函数声明一次:

var updateFn = function () {
    self.hide()
};
input_element.addEventListener("paste", updateFn, false);
input_element.addEventListener("keypress", updateFn, false);
input_element.addEventListener("drop", updateFn, false);

其他方式,但它们对你来说可能不是很明智。