循环遍历jQuery事件中的对象覆盖变量

时间:2014-08-19 12:07:15

标签: javascript jquery

此处完整演示http://codepen.io/EightArmsHQ/pen/b837b9f739661a2b2ff205c80c2ccf14

我在循环一个对象,但似乎我只获取对象中最终值的文本。

这是我循环的对象:

var nonEmpty = {
  '#firstname':"Please enter your first name",
  '#lastname':"Please enter your last name",
  '#age':"Please enter your first name",
  '#your_background':"Please enter your background",
};

这是我正在使用的循环:

for(var p in nonEmpty){
  if(nonEmpty.hasOwnProperty(p)){
    console.log(p + " = " + nonEmpty[p]);
    $(p).closest('fieldset').append(feedback);
    $(p).focus(function(){
      $(this).closest('fieldset').removeClass("complete").removeClass("error");
    });
    $(p).on('focusout change', function(){
      var $this = $(this);
      if($this.val() == ''){
            warn($this, nonEmpty[p]); // nonEmpty[p] seems to always be the
                                      // ultimate item in the array
      }else{
        unwarn($this);
      }
    });
  }
}

但是当我添加事件监听器时,它似乎会覆盖自身,导致只有最后一段文本被使用(nonEmpty[p])。我尝试在很多地方使用var,在循环中放置一个闭包,各种各样。

enter image description here

0 个答案:

没有答案