Javascript jQuery:尝试绑定事件时对对象的引用错误

Javascript jQuery:尝试绑定事件时对对象的引用错误,javascript,jquery,validation,events,bind,Javascript,Jquery,Validation,Events,Bind,好吧,有这样的问题。。。 我试图减少验证字段所需的代码量。 在本例中,我创建了一个数组,其中包含我想要绑定事件的元素ID。 像这样: var fields = new Array('#edit-field-first-name', '#edit-field-last-name', '#edit-field-mobile'); 然后我将事件绑定到一个循环中: for(var i = 0; i < fields.length; i++){ if($('#user-profile-form

好吧,有这样的问题。。。 我试图减少验证字段所需的代码量。 在本例中,我创建了一个数组,其中包含我想要绑定事件的元素ID。 像这样:

var fields = new Array('#edit-field-first-name', '#edit-field-last-name', '#edit-field-mobile');
然后我将事件绑定到一个循环中:

for(var i = 0; i < fields.length; i++){
  if($('#user-profile-form ' + fields[i]).length > 0){
    var $obj = $('#user-profile-form ' + fields[i]);
    $obj.bind({
      blur :  function(){
                  if(!reg_chars.test($obj.val())){
                      $obj.css('border','1px solid #A14')
                          .parent().children('div.description').css('color', '#A14');
                  }else{
                      $obj.css('border-style','solid').css('border-color','#C5C3C3 #EDEDED #EDEDED #C5C3C3').css('border-width','1px')
                         .parent().children('div.description').css('color', '#333');
                  };
              }
    })
  }
}
for(变量i=0;i0){
var$obj=$(“#用户配置文件表单”+字段[i]);
$obj.bind({
模糊:函数(){
如果(!reg_chars.test($obj.val())){
$obj.css('border','1px solid#A14')
.parent().children('div.description').css('color','#A14');
}否则{
$obj.css('border-style','solid')。css('border-color','C5C3C3#eded#eded#C5C3C3')。css('border-width','1px'))
.parent().children('div.description').css('color','#333');
};
}
})
}
}
现在奇怪的事情发生了。 它正确地触发了“模糊”事件。但它总是引用数组中的最后一个元素。看起来它总是使用同一个对象,每次循环迭代都会覆盖它


所以我需要帮助。。。什么是解决方案?

我建议您花些时间阅读John Resig的教程。它将帮助您解决这个问题,还将使您对Javascript有更深入的理解。

在绑定函数的上下文($obj)赋值中的问题。试着换成

    for(var i = 0; i < fields.length; i++){
      if($('#user-profile-form ' + fields[i]).length > 0){
        var $obj = $('#user-profile-form ' + fields[i]);
        $obj.bind({
          blur :  function(){
                      var $input = $(this);                      

                      if(!reg_chars.test($input.val())){
                          $input.css('border','1px solid #A14')
                              .parent().children('div.description').css('color', '#A14');
                      }else{
                          $input.css('border-style','solid').css('border-color','#C5C3C3 #EDEDED #EDEDED #C5C3C3').css('border-width','1px')
                             .parent().children('div.description').css('color', '#333');
                      };
                  }
        })
      }
    }
for(变量i=0;i0){
var$obj=$(“#用户配置文件表单”+字段[i]);
$obj.bind({
模糊:函数(){
var$input=$(此);
如果(!reg_chars.test($input.val())){
$input.css('border','1px solid#A14')
.parent().children('div.description').css('color','#A14');
}否则{
$input.css('border-style','solid').css('border-color','C5C3C3#eded#eded#C5C3C3').css('border-width','1px'))
.parent().children('div.description').css('color','#333');
};
}
})
}
}

如果它总是只拾取最后一个元素,那么“正确触发模糊事件”是什么意思?这是正常的,因为您给obj的最后一个值是表的最后一个值。因此,当您使用它时,您将检索最后一个受影响的值。谢谢,已经整理好了…:)我的问题是我需要有更多的睡眠…:())())