3 ms·
I'm not sure your code does as intended, won't the function be called only once the element is clicked? This should work okay: for (var i = 0; i < 5; i++) {
by anc2020 15y ago
I'm not sure your code does as intended, won't the function be called only once the element is clicked?
This should work okay:
for (var i = 0; i < 5; i++) {
$(DOMelement:eq(i)).click((function(i) {
return function() {
console.info(i);
}
}(i)));
}
Also surely DOMelement.eq(i) as opposed to DOMelement:eq(i)?
- sdevlin 15y agoI think you're correct. His interior function is still just another closure around the original var i. Also, this feels like piling on, but I think the original (intentionally erroneous) example would print '5' repeatedly rather than '4'. var i ends up with the value 5.
- csomar 15y agoYes, you are correct (I can't edit right now). You need to return a new function, and a reference actually. for DOM part, I didn't understand your question. However, the right way to do it is $(DOMelement:eq(i)).each(); to iterate through each element.