2016-04-18 5 views
0

У меня есть пара полей выбора, где пользователь должен сначала выбрать страну, а затем выберите город или регион в этой стране:JQuery Еогеасп цикл заказа

<select name="ListingCountry" id="ListingCountry"> 
<option value="0">-- Choose the country --</option> 
<option value="1" selected="selected">United Kingdom</option> 
</select> 
<select name="ListingCity" id="ListingCity" class="city"> 
<option value="0">-- Choose the city or region --</option> 
</select> 

2-я <select> потребности обновить динамически на основе выбор 1-го - то есть только городов и регионов Великобритании, показанных при выборе Великобритании.

списки генерируются из базы данных и устанавливаются в массив:

var cityOptions = 
{ 
1 : 
[ 
    { 
    37: "London", 
    1: "Bedfordshire", 
    2: "Berkshire", 
    3: "Birmingham", 
    ... 
    } 
] 
}; 

1 в направлении верхней ссылки страны ID.

Идентификационные номера автоматически генерируются базой данных. Я хочу, чтобы капитал всегда находился в верхней части списка и добивался этого в печати массива, используя поле CityOrder и сортируя по этому адресу CityOrder descending - поэтому почему Лондон (с CityOrder из) находится в верхней части списка, несмотря на имеющих более высокий идентификатор, чем другие, все из которых имеют CityOrder от 0.

Затем я использую JQuery для динамического обновления списка:

function updateCityOptions(currentCity) 
{ 
var $countryAll = $("#ListingCity"); 
var $countrySel = $("#ListingCountry option:selected").val(); 
if($countrySel!=0) 
{ 
    $('#ListingCity option:gt(0)').remove(); 
    $.each(cityOptions[$countrySel], function(k,v) 
    { 
    $.each(cityOptions[$countrySel][k], function(k2,v2) 
    { 
    if(k2==currentCity) 
    { 
    $countryAll.append($('<option selected="selected"></option>').attr("value", k2).text(v2)); 
    } 
    else 
    { 
    $countryAll.append($('<option></option>').attr("value", k2).text(v2)); 
    } 
    }); 
    }); 
    $(".city").fadeIn(300); 
} 
else 
{ 
    $('#ListingCity option:gt(0)').remove(); 
    $(".city").fadeOut(300); 
} 
} 

Проблема заключается в том, что порядок select коробки, когда выбрана страна, кажется, в порядке массива, а не порядок в который он напечатан в DOM - то есть Bedfordshire появляется первым в списке (ID номер 1), а Лондон затеряется где-то посередине.

Любые подсказки?

+0

Является ли Лондон 'currentCity' в аргументе функции? Вы можете просто использовать '.prepend' вместо' .append', чтобы вставить его в начале поля '