2012-02-28 54 views
0

我有一个.each()的问题,我试图遍历多个跨度#obj并使用选择列表name = instance_type中的信息作为名称= instance_input中的数据变量。jquery每个都没有包含

我让它为单次迭代工作,但如果我从.each()中删除'return false',数据变量将变为填充姓氏= instance_type的值。

$("span#obj").each(function(){ 

    self = this; 

    $("[name='instance_input']",this).autocomplete({ 
      source: function(request, response) { 
       $.ajax({ 
        url: "json_lookup_call.php", 
        dataType: "json", 
        data: { 
         dataClass : $("[name='instance_type'] :selected",self).val(), 
         maxRows: 12, 
         name_startsWith: request.term 
        }, 
        success: function(data) { 
         response($.map(data.results, function(item) { 
          return { 
           label: item.reference + (item.name ? " - " + item.name : ""), 
           value: item.reference 
          } 
         })); 
        } 
       }); 
      }, 
      minLength: 3 
     }); 

    return false; 
}); 

回答

2

尝试

var self = this; 

否则你将创建一个全局变量,只有最后一个将被使用,因为每一次迭代覆盖前一个。

+0

谢谢你,它总是看起来最简单的东西。 – fir3x 2012-02-28 13:33:07

+0

是的,如果你对自己的代码太深入了,你会失去对简单方面的关注。请接受我的回答,如果它帮助你解决你的问题:) – 2012-02-28 13:35:50