2010-05-26 118 views
0

新手問題。鑑於以下html。jQuery - 動態變量?

<div id="mycontainer1" class="container"> 
<input type="text" class="name"/> 
<input type="text" class="age"/> 
</div> 

<div id="mycontainer2" class="container"> 
<input type="text" class="name"/> 
<input type="text" class="age"/> 
</div> 

我試圖創建一個功能,我可以通過一個元素ID和包含了我想要得到的輸入值的類數組。

因此,例如,

var inputClasses = ['name','age']; 

getInputValue('.container', inputClasses); 


    function getInputValue(elem, arr) {  
      $(elem).each(function() { 
       // need a way to map items in array to variables 

       // but how do I do this dynamically? 
       var nameValue = $(this).find('.name').val(); 
       var ageValue = $(this).find('.age').val(); 

      }); 

回答

2

嘗試:

var inputClasses = ['name','age']; 

console.log(getInputValues('#mycontainer1', inputClasses)); 

function getInputValues(elem, arr) { 
    return $(elem).find("." + arr.join(",.")).map(function(val) { 
    return $(this).val(); 
    }).get(); 
} 
+0

我想你想找到'(+ arr.join( '') '')'。 – tvanfosson 2010-05-27 00:06:48

+0

如果需要基本數組而不是jQuery作爲輸出,可能還想在末尾標記'get()'。 – tvanfosson 2010-05-27 00:15:40

+0

@hanfosson好點(X2):) – cletus 2010-05-27 00:23:52

1

試試這個:

var inputClasses = ['name','age']; 
var inputValues = getInputValue('#myContainer1', inputClasses); 

function getInputValue(elem, arr) { 
    var out = []; 

      for(i=0; i <= arr.length; i++) { 
       var out[arr[i]] = $(elem+' .'+arr[i]).val(); 
      }; 

    return out; 
} 

您現在應該有一個包含每個輸入字段的值的數組inputValues,類名稱作爲索引鍵。

例如,然後你可以讀出這樣的 「名稱」 值:

alert('Your name: '+inputValues['name']);