jQuery每个函数只返回总结果的最后结果

时间:2011-03-24 18:39:03

标签: javascript jquery

我有一个带键:值对的对象。我循环遍历这个对象,如果键匹配传递给我的函数的值,我将它添加到另一个变量。问题是我的代码最终循环遍历结果,只将最后一个匹配添加到我的新变量。

function DirectoryOfBusinessSubs(parentID) {
     var myOpt = {"1":"<option>sub1</option>","1":"<option>sub2</option>"};
     var myList;
     $.each(myOpt, function(key, value) {
                    if(key == parentID){
                    myList += value;
                    }
                });
                alert(myList);
                c.append(myList);
        }

如果我在1传递密钥,myList应该同时获得sub1和sub2,但此代码仅将sub2存储在myList中。

2 个答案:

答案 0 :(得分:2)

试试这个:

function DirectoryOfBusinessSubs(parentID) {
     var myOpt = {"<option>sub1</option>":"1","<option>sub2</option>":"1"};
     var myList = ''; //Fix undefined alert
     $.each(myOpt, function(key, value) {
                    if(value== parentID){
                    myList += key;
                    }
                });
                alert(myList);
                c.append(myList);
        }

这必须做好工作:)

答案 1 :(得分:0)

包括另一个范围:

$.each(myOpt, function(key, value) {
                    (function(v){
                      if(key == parentID){
                        myList += v;
                      }
                    })(value);
                });
                alert(myList);
                c.append(myList);
        }

JavaScript closures