【问题标题】:jQuery 'change' event inside loop not working循环内的jQuery“更改”事件不起作用
【发布时间】:2011-05-21 10:57:07
【问题描述】:

第一个事件绑定如何对所有提交按钮起作用,而第二个事件绑定只对最后一个应用 css,而不管它正在侦听什么形式?

for (var i=0; i < len; i++) {
    var divI = "ind-" + i;
    var formID = document.forms["form-" + i];

    $(formID).bind("submit", validate);
    $(formID).bind("change", function(){
        $('#' + divI).css("background-color","green");
    });
}

【问题讨论】:

  • @Marcus 真的有必要编辑这个吗?您重新提出了 8 年前的问题。
  • 有必要吗?没有。增值?是的。我读代码有点困难,所以我只是稍微清理了一些空白。我有没有让你伤心?

标签: jquery css forms bind


【解决方案1】:

它关闭。检查这个 jquery and javascript's closure

【讨论】:

  • Thanx @George Kastrinis,但究竟什么是闭包?
  • 闭包是一个函数和它的环境中的一些元素的组合。 Closure on wikipedia 在您的情况下,您有一个“更改”函数,但它使用未在函数内部定义的 divI。它是在函数的环境中定义的。
  • 好的thanx,我从您的链接中看到如何修复它,但为什么它最初会失败?
  • 查看上述链接的最后一条评论。 “不,闭包可以访问父变量 i,在调用 click() 事件时,该变量已设置为 5”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
  • 2015-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多