Jquery can't get my head around this

前端 未结 4 756
予麋鹿
予麋鹿 2021-01-20 04:26

The alert(i) onclick bind line is run on 3 divs, but all of them when clicked alert the last set value of i. I hope what I\'m trying to do makes s

4条回答
  •  被撕碎了的回忆
    2021-01-20 04:58

    When you're iterating in the for loop, you're essentially given the address to i, if you use it within the for loop at that very moment, it will be the value expected, however if you use it later (such as in a click event) it will point to the final incremented value of 3. To get the desired affect you can create an anonymous function, like so

    for (var i = 0; i < self.bars[BarsIndex].markers.length; i++) (function(i) {
    
        // Add click event
        $("#bmi-" + self.containerId + "-" + i).bind('click', function() {
            alert(i);
        });
    })(i)
    

提交回复
热议问题