jQuery - динамические переменные? - PullRequest
0 голосов
/ 27 мая 2010

Вопрос новичка. Учитывая следующий HTML.

<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>

Я пытаюсь создать функцию, в которой я могу передать идентификатор элемента и массив, содержащий классы входных значений, которые я хочу получить.

Так, например,

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 ]

2 голосов
/ 27 мая 2010

Попробуйте:

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();
}
1 голос
/ 27 мая 2010

Попробуйте это:

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, который содержит значения каждого поля ввода с именем класса в качестве ключа индекса.

Например, вы можете прочитать значение «name» следующим образом:

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