2011-03-24 96 views
1

我有一个key:value对的对象。我通过这个对象循环,如果键匹配传入我的函数的值,我将它添加到另一个变量。问题是我的代码最终会循环遍历结果,并且只会将最后一个匹配添加到我的新变量中。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

+0

不能使用相同的密钥 – Faraona 2011-03-24 18:48:02

回答

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); 
     } 

这必须做的工作:)

+0

哈哈,是的这确实奏效。 – 2011-03-24 19:40:29

+0

然后你可以投票:) – Faraona 2011-03-24 19:56:45

+0

我会如果你成为注册。 – 2011-03-24 20:02:55

0

包括另一范围:

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

JavaScript closures

+0

这个很有意思,谢谢你的文章。 – 2011-03-24 19:40:10