Замена JQuery для коммутатора - PullRequest
       5

Замена JQuery для коммутатора

2 голосов
/ 14 августа 2010

Добрый день.

Я ищу switch замену в jQuery.По сути, я понятия не имею, как заменить switch.

Я получил следующие данные switch, примерно для 70 стран.Есть ли способ заменить его на loop?

$("#country").change(function () {
  switch ($('#country :selected').val()) {
  case 'pl':
    $("fieldset#state").hide().load('pl.txt').fadeIn(800);
    break;
  }
});

Кроме того, есть ли возможность автоматически выполнить загрузку определенного файла, если уже выбранный элемент?

Редактировать:

Мое описание проблемы было не лучшим.Простите за это.Основная проблема:

  • У меня есть списки только для некоторых стран, но не для всех из них
  • Я использовал switch для страны для чтения файла, если его не былоЯ вставлял текстовое поле по умолчанию
  • Мне также нужно реализовать загрузку файла по умолчанию.Что я имею в виду?Я запрашиваю базу данных для страны, а затем выбираю ее в раскрывающемся списке стран.Как загрузить файл автоматически (если есть)?

С уважением, Том

Ответы [ 4 ]

5 голосов
/ 14 августа 2010

Вы можете сделать так:

$("#country").change(function () {
  $("fieldset#state").hide().load($('#country :selected').val() + '.txt').fadeIn(800);
});

Редактировать :Для получения списка доступных стран вы можете поместить их в массив, а затем выполнить поиск

$("#country").change(function () {
    var supportCountries = ['pl',]; //put more here
    var country = $('#country :selected').val();
    if(supportCountries.indexOf(country))
        $("fieldset#state").hide().load(country + '.txt').fadeIn(800);
    else
        $("fieldset#state").hide().load('default.txt').fadeIn(800); //here is load the default text, change if you has another way.
});

. Для получения более подробной информации, если вы хотите заменить switch, тогда давайте использовать for / loop чтобы найти соответствующий случай, затем выполните действие для этого случая.

1 голос
/ 14 августа 2010

Как насчет этого, предполагается, что вы соблюдаете соглашение об использовании кода страны "pl" в названии текстового файла "pl.txt" ...

$("#country").change(function () {
    var fileName = $('#country :selected').val() + '.txt';
    $("fieldset#state").hide().load(fileName).fadeIn(800);
});
0 голосов
/ 14 августа 2010

Если текстовые файлы всегда имеют то же имя, что и значение в вашем элементе формы, тогда вы можете просто создать переменную, например, так:

  $("#country").change(function () {
    var counrty = $('#country :selected').val();

        $("fieldset#state").hide().load(country+ '.txt').fadeIn(800);

    }
});
0 голосов
/ 14 августа 2010

Можете ли вы создать ассоциативный массив (т. Е. Объект), содержащий все значения $('#country :selected').val() и сопоставленные с 1) функциями или 2) объектами с полями, подходящими для операции, которую вы хотите выполнить для каждого?

Тогда вы могли бы сделать

var lookup = { 'p1': function() { $("fieldset#state").hide().load('pl.txt').fadeIn(800); } }
//or
var lookup = { 'p1': { selector: 'p1.txt', speed: 800 } };

action = lookup[$('#country :selected').val()];

action();
//or 
$("fieldset#state").hide().load(action.selector).fadeIn(action.speed)
...