Как написать сухую функцию update_output () для этих этапов в jQuery? - PullRequest
0 голосов
/ 16 февраля 2010

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

var gender;
var age;
$("#gender :radio").click(function() {
  gender = $(this).val();
  update();
});
$("#age li").click(function() {
  age = $(this).text();
  $('#children').show();
  update();
});


function update() {
  var text = gender || "";
  if (text.length > 0) {
    text += " -> ";
  }
  text += age || "";
  $("span.jquery_out").text(text);
}

Это нормально, но я хочу добавить 12 переменных, и мне нужно, чтобы функция update () работала более желательным образом.

Мои переменные:

var gender;
var age;
var children;
var income;
var stage2select;
var day;
var spend;
var categories;
var product;
var price;
var quantity;
var total;

Как заставить их циклически проходить через функцию update () с "->" между ними, без чрезмерного использования кода?

Спасибо, Мэтт.

1 Ответ

1 голос
/ 16 февраля 2010

Вы можете изменить свой длинный список переменных на объект, а затем зациклить объект следующим образом:

var myObj = {
    gender:'',
    age:'',
    children:'',
    income:'',
    stage2select:'',
    day:'',
    spend:'',
    categories:'',
    product:'',
    price:'',
    quantity:'',
    total:''
};

$("#gender :radio").click(function() {
    myObj.gender = $(this).val();
    update();
});

$("#age li").click(function() {
    myObj.age = $(this).text();
    $('#children').show();
    update();
});

function update() {
    var text = "";
    $.each(myObj, function(i){
        if (this != ''){
            if (text.length){
                text += " -> ";
            }
            text += this;
        }
    });
    $("span.jquery_out").text(text);
}
...