【问题标题】:Value of variable not changing predictably within loop变量的值在循环内没有发生可预测的变化
【发布时间】:2012-11-19 11:13:35
【问题描述】:

我的 javascript 循环无法正常工作。我得到的只是$i 的最终值。

$(function() {
    var $count = $('#count').val();
    for (var $i = 1; $i < $count; $i++) {
        var btnRemove = $('#removeImage' + $i);
        var profilepictureid = $('#profilePitcureID' + $i).val();
        btnRemove.click(function() {
            alert($i);
        });
    }
});​

【问题讨论】:

    标签: javascript jquery closures


    【解决方案1】:

    当您的 click 事件处理程序执行时,$i 已达到其最终值 ($count - 1)。您需要在循环的每次迭代中捕获$i 的值。您可以通过引入一个闭包来做到这一点,该闭包在每次迭代时“关闭”$i 的值:

    for(var $i=1; $i<$count; $i++) {
        var btnRemove=$('#removeImage'+$i); 
        var profilepictureid = $('#profilePitcureID'+$i).val();
    
        (function ($i) {
            btnRemove.click(function(){
                alert($i);
            });
        }($i));
    }       
    

    【讨论】:

    • @Mansoor:只是为了补充,检查这个主题stackoverflow.com/questions/4472528/…,解释什么是jquery闭包函数语法(除非你已经知道)——这就是我在阅读这个答案后所做的
    猜你喜欢
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    相关资源
    最近更新 更多