2011-03-24 135 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