循环事件注册

昨天看了node群的提问,就是大家经常遇到的循环里注册事件的问题:

由于最近在玩rx, 所以自然而然想到的map之类的

Solution1

var gos = document.querySelectorAll('.go');

Array.prototype.map.call(gos, function (v, i) {
v.addEventListener('click', function () {
console.log(i+1);
})
});

群里给了改进的方法

Array.from(gos) 可以得到array类型
或者 […gos]

Solution2

var gos = document.querySelectorAll('.go');

for (var index = 0; index < gos.length; index++) {
var element = gos[index];
clickEvent(gos[index], index);
}

function clickEvent(v, i) {
v.addEventListener('click', function () {
console.log(i + 1);
})
}