我想替换它:
for( var i=0; i<elementArray.length; i++ )
elementArray[i].click(function(){
console.log("element clicked - selectedElementIndex = " + i);
});
有类似的东西:
for( var i=0; i<elementArray.length; i++ )
elementArray[i].click( onElementClick(i) );
function onElementClick( i ){
console.log("element clicked - selectedElementIndex = " + i );
}
我该怎么办? :)
答案 0 :(得分:4)
因为(据我所知)点击处理程序不能接受参数,你需要在范围内创建一个带变量的函数,它应该是这样的:
for( ... ) {
elementArray[i].click( onElementClick(i) );
...
}
function onElementClick( id ){
return function() {
console.log("element clicked - selectedElementIndex = " + id );
}
}
答案 1 :(得分:1)
替换:
elementArray[i].click( onElementClick(i) );
使用:
elementArray[i].click( onElementClick(elementArray[i].id));
答案 2 :(得分:0)
将其包装在函数表达式中:
elementArray[i].click(function() {
onElementClick(i);
});
您还需要将代码包装在函数表达式中以避免棘手问题:
(function() {
...
for ( ... ) (function(i) {
elementArray[i].click(function() {
onElementClick(i);
});
})(i);
})();
答案 3 :(得分:0)
使用data
可能看起来像:
for (... {
elementArray[i].click( onElementClick ).data('id',i);
}
function onElementClick(){
console.log("element clicked - selectedElementIndex = " + $(this).data('id') );
}