我有四个输入,我想添加一个事件。
我在HTMLCollective上创建了一个新函数
HTMLCollection.prototype.eachOnClick = function(callback){
var len = this.length
var j = 0
for(var i = 0; i < len; i++){
let elem = this.item(i)
document.addEventListener('click', () => {
callback(elem)
})
}
}
document.getElementsByClassName('blog-search-filters').eachOnClick(function(elem){
// if elem.checked do something
// else do something else
console.log(elem);
})
<div class="blog-search-filters">a</div>
<div class="blog-search-filters">b</div>
问题是,点击其中一个项目后,所有四个输入回调都会运行两次,因此回调函数会被调用8次。
我在这里缺少什么?
非常感谢任何帮助。
干杯
答案 0 :(得分:2)
似乎你需要处理元素HTMLCollection.prototype.eachOnClick = function(callback){
var len = this.length
var j = 0
for(var i = 0; i < len; i++){
let elem = this.item(i);
//use elem reference here
elem.addEventListener('click', () => {
callback(elem)
})
}
}
,而不是文档。
var collection = db.GetCollection<User>("users");