すでにすべてがページ上にselect
の形式である場合は、countyオプションの値を使用して、正しいselect
を表示できます。
$("#counties").change(function(){
$(".cities").hide();
$("#" + this.value + "-cities").show();
});
そして、この作業の例:それは素晴らしいではありませんので、http://jsfiddle.net/jonathon/upaar/
しかし、私はこれに対してお勧めします。少量だけ必要な場合でも、あなたのページにはすべての都市があります。最良の選択肢は、あなたの郡リストに値を設定して、あなた自身のJSONと$.get()メソッドを使って都市にその都市を移入することです。
たとえば、ここではGeoNamesを使用しています。自分のデータで置き換えます。作業それの
$.get('http://ws.geonames.org/countryInfoJSON', function(data) {
$.each(data.geonames, function(i, item) {
$("#countries").append("<option value='" + item.geonameId + "'>" + item.countryName + "</option>");
});
});
$("#countries").change(function() {
$("#cities").empty();
$.get('http://ws.geonames.org/childrenJSON?geonameId=' + this.value, function(data) {
$.each(data.geonames, function(i, item) {
$("#cities").append("<option value='" + item.geonameId + "'>" + item.name + "</option>");
});
});
});
例:http://jsfiddle.net/jonathon/QkXAK/
上記負荷の国とはcountries
選択の変更イベントを設定します。この値が変更されると、必要なデータとともにサーバーに送信されます。この場合、geonameId
が送信され、その国の子要素が検索されます。その後、cities
を選択してクリアし、AJAXリクエストで返された都市を追加します。
この利点は、ページの読み込み時にすべてのデータを送信する必要がなくなり、必要なものだけを読み込むことができることです。この例ではGeoNamesを使用していますが、独自のデータセットを持っている場合は基本原則は同じです。
すべての郡のすべての都市がすでにページにロードされていますか?または、Ajax呼び出しを使用して動的にロードされていますか? –
彼らはそこにあるようにphpで読み込まれます。たぶん、郡に関係するすべての都市に対して特定のクラスを設定することができます。 display:noneで再生してください。何か – Paparappa