我在这样的选择标签上设置onchange事件:
Dictionary.prototype.setSelectEvent = function setSelectEvent() {
var selects = document.querySelectorAll('.dictionary-page__select');
if (selects) {
for (var i = 0; i < selects.length; i++) {
selects[i].onchange = function() {
this.onChange();
}.bind(this);
}
}
};
这在桌面上运行良好。事件已正确设置并触发,没有错误。在移动设备上,事件根本没有被解雇。我也试过onblur,但那没有做任何事情。使用vanilla javascript,我如何在select标签上设置一个事件并让它在移动设备上运行?
解决方案: 第三方库覆盖了桌面事件,但不是移动桌面事件。不得不在事件中传递选择对象。
Dictionary.prototype.setSelectEvent = function setSelectEvent() {
var selects = document.querySelectorAll('.dictionary-page__select');
var that = this;
if (selects) {
for (var i = 0; i < selects.length; i++) {
selects[i].onchange = function() {
that.onChange(this);
};
}
}
};
答案 0 :(得分:1)
Dictionary.prototype.setSelectEvent = function setSelectEvent() {
var selects = document.querySelectorAll('.dictionary-page__select');
for (var i = 0; i < selects.length; i++) {
selects[i].onchange = this.onChange.bind(this);
}
};
前面的代码应该执行您正在寻找的内容,通过NodeList进行集成,直到selects.length
。您还注意到,您可以直接绑定到this
,每次调用onChange
上的Dictionary
方法时,我们都不需要定义新的onChange函数。
编辑:删除了转换为数组。