我有三个选择框州,城市和地区,其ID与名称相同
$(document).ready(function() {
$("#state").on('change',function(){
var state = $("#state").attr('value');
$("#city").load('http://localhost/trial/index.php/new/view_cities/'+state).change();
}).change();
$("#city").on('change',function(){
var city = $("#city").attr('value');
$("#locality").load('http://localhost/trial/index.php/new/view_localities/'+city);
}).change();
});
页面加载状态正确显示,因为它直接来自数据库,城市选项会自动更新,但地区不会。当我改变城市时,地方可以改变。
答案 0 :(得分:0)
.load()
函数只是调用$.ajax()
的包装器,它是异步的;如果你试图通过该调用与加载到元素中的元素进行交互,则需要传递一个回调函数,该函数在AJAX请求返回成功响应后执行。
尝试更换:
$("#city").load('http://localhost/trial/index.php/new/view_cities/'+state).change();
与
$("#city").load('http://localhost/trial/index.php/new/view_cities/'+state,
function() {
$("#city").change();
});
还有几点要点:
您可以在函数内使用this
来为事件处理程序引用触发事件的元素。而不是:
$("#state").on('change',function(){
var state = $("#state").attr('value');
你可以这样做:
$("#state").on('change',function(){
var state = this.value;
此外,如果 要使用jQuery获取元素的值,请使用.val()
函数而不是.attr('value')
。