我在循环一个对象,但似乎我只获取对象中最终值的文本。
这是我循环的对象:
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
,在循环中放置一个闭包,各种各样。