2012-07-05 84 views
0

我有2个阵列,一个与城市,并与ID的另一个数组... 我想这两个循环,然后输出一些HTML遍历jQuery的2个阵列,并结合

现在我只是在循环城市,再追加一些HTML到如下:

if ($jq(".area").length > 0) { 

    var region = $jq(".hiddenFieldRegion").val(); 
    var cityIDs = $jq(".hiddenFieldChosenAreas").val(); 
    var strcities = $jq(".hiddenFieldChosenCities").val(); 
    //var cities = strcities.split('|'); 

    //Set region to be marked 
    if (region) { 
     $jq(".mapdk").attr("class", region); 
    } 

    //Appending to searchform 
    if (strcities) { 
     $jq.each(strcities.toString().split("|"), function (k, v) { 
      var v = v.split("|"); 
      $jq("<option selected />").text(v[0]).appendTo("select.chosen-cities"); 
     }); 
    } 

} 

我想在那里IM追加到searchform的地方,添加属性值,从cityIDs阵列的ID ...

所以我得到一些HTML如:

<option value="XXX">CityName</option> 

这可能吗?

+0

是............... – Mageek

+0

你能张贴'cityIDs'和'strcities'结构的一个例子吗? – jbrtrnd

+0

当然,身份证的结构是:849 | 846 而且这个城市是一样的:CPH | Mariager – nuffsaid

回答

1

假设你的城市ID和你的城市名称以同样的方式被orderred,你可以通过该指数数组访问每个名称/ ID:

var cityIDs = $jq(".hiddenFieldChosenAreas").val(); 
var strcities = $jq(".hiddenFieldChosenCities").val(); 

var cityIDs_array = cityIds.split("|"); 
var strcities_array = strcities.split("|"); 

.... 

if (strcities) { 
    $jq.each(strcities_array, function (k, v) { 
     //var v = v.split("|"); Unnecessary if strcities is like "city1|city2|city3" 
     $jq("<option value='"+cityIDs_array[k]+"' />").text(v).appendTo("select.chosen-cities"); 
    }); 
} 

在这方面,这样,你可以在你的循环访问每个城市ID。
但我认为你应该在相同的字符串中存储城市名称和城市id。例如"city1:1|city2:2|city3:3"。然后,使用split函数,您将获得id和名称。

+0

超级,那工程...是的,我已考虑将数据存储在相同的数组中,也许我应该看看... ... – nuffsaid

0

假设顺序是两个数组,你可以使用每个功能的指标参数(k)相同:

if (strcities) { 
    var aCityIDs = cityIDs.split("|"); 
    $jq.each(strcities.toString().split("|"), function (k, v) { 
     var v = v.split("|"); 
     var id = aCityIDs[k]; 
     $jq("<option selected value='"+id+"' />").text(v[0]).appendTo("select.chosen-cities"); 
    }); 
} 
0

又如:

var strict = ('aaa|eeee|dddd').split('|'); 
var id = ('1|2|3').split('|'); 

$.each(strict, function (k) { 
      $("<option selected />").text(strict[k]).appendTo("select.chosen-cities").attr('value',id[k]); 
     }); 
0

这是很容易的,如果你的两个数组在平价与问候索引彼此 - 遍历一个,那么同样的指数查找值的其他数组中。

//simulate environment 
var strcities = 'one|two|three', 
    cityIDs = '1|2|3'; 

//main code 
var ids = cityIDs.split('|'); 
$.each(strcities.toString().split("|"), function (index, val) { 
    var opt = $("<option />", {value: ids[index], text: val}).appendTo("select.chosen-cities"); 
    /* if (index == 2) opt.prop('selected', 'selected'); /* 
}); 

注意的几点:

  • 你是分裂的|曾经在$.each,再里面。由于这是不合逻辑的(任何|在第一次拆分后都会消失),我将其删除。
  • 您正在为每个选项添加selected。如果您只想要选择第一个选项,则不需要添加任何内容。如果要选择特定选项,请参阅我注释的行,该行选择第3个元素。

http://jsfiddle.net/DhH3U/