0

我有三个选择框 state、city 和 locality,id 与 name 相同

$(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();
});

页面加载状态会正确显示,因为它直接来自数据库,并且城市选项会自动更新,但地区不会。当我改变城市时,地方可能会改变。

4

1 回答 1

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').

于 2012-06-26T14:48:40.613 回答