jQuery替换开关

时间:2010-08-14 13:58:41

标签: jquery switch-statement

美好的一天。

我正在寻找jQuery中的switch替换。基本上,我不知道如何替换switch

我在大约70个国家/地区关注switch。有没有办法用loop替换它?

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

另外,如果已经选择了项目,是否有可能自动实现加载特定文件?

修改

我对这个问题的描述不是最好的。对不起。主要问题是:

  • 我只列出了一些国家/地区,而不是所有国家/地区
  • 我使用switch国家/地区来阅读文件,如果没有,我默认插入文字字段
  • 我还需要默认实现加载文件。我的意思是什么?我查询国家的数据库,然后我在国家下拉列表中选择它。如何自动加载文件(如果有的话)?

此致 汤姆

4 个答案:

答案 0 :(得分:5)

你可以这样做:

$("#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 :(得分:1)

这个怎么样,它假设你遵循在文本文件“pl.txt”的名称中使用国家代码“pl”的惯例......

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

答案 2 :(得分:0)

您是否可以创建一个关联数组(即对象),键入所有$('#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)

答案 3 :(得分:0)

如果文本文件的名称始终与表单元素中的值相同,那么您可以像这样创建一个变量

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

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

    }
});