如果所有内容都已以以下形式显示在页面上select
那么您可以使用县选项的值来显示正确的select
.
$("#counties").change(function(){
$(".cities").hide();
$("#" + this.value + "-cities").show();
});
这个工作的例子:http://jsfiddle.net/jonathon/upaar/ http://jsfiddle.net/jonathon/upaar/
但是,我建议不要这样做,因为它不太好。即使您只需要少量城市,您的页面上也会包含所有城市。最好的选择是填充您的县列表,然后使用您自己的 JSON 和$.get() http://api.jquery.com/jQuery.get/ method.
例如(我只是使用GeoNames http://www.geonames.org在这里,您将替换为您自己的数据);
$.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/ http://jsfiddle.net/jonathon/QkXAK/
上面加载了国家并设置了更改事件countries
选择。当该值发生变化时,它会向服务器发送所需的数据。在这种情况下,它发送geonameId
并找到该国家/地区的子元素。然后它会清除cities
选择并添加 AJAX 请求中返回的城市。
这样做的好处是您只加载您需要的内容,从而不必在页面加载时发送所有数据。我在示例中使用 GeoNames,但如果您有自己的数据集,那么基本原理是相同的。