选择JQuery的Javascript问题和我的调用代码

以下代码表现出一种非常奇怪的行为……

我有两个html选择一个用于区域,另一个用于部门 ,请记住,对于一个选定的区域,我正在尝试加载相应的部门。

第一个html选择(区域) 在正常页面加载时填充,第二个html选择(部门) 由ajax调用从服务器检索JSON

我选择了jquery。

我所指的奇怪行为如下:

  • 在第一次更改区域选择(例如选择区域A)时, 不填充部门选择
  • 在区域选择的第二次更改(例如选择区域B)时, 部门选择由区域A的部门填充!!!!

使用Javascript:

$(document).ready(function() { $(".chzn-select").chosen({no_results_text: "No results matched"}); var geolocationRegionSelect = $("#geolocationRegionSelect"); var geolocationDepartmentSelect = $("#geolocationDepartmentSelect"); geolocationRegionSelect.bind('change', function(event) { $.get("/kadjoukor/geolocations/findDepartmentsByRegion?regionId="+$(this).val(), function(result){ geolocationDepartmentSelect.empty(); $.each(result, function() { geolocationDepartmentSelect.append($("").val(this.id).text(this.department)); }); }, 'json'); $(".chzn-select").trigger("liszt:updated"); }); }); 

这是相应的html:

 

任何人都可以建议吗?

编辑 :生成的HTML:

  
Non renseigne AlsaceAquitaineAuvergneBasse-NormandieBourgogneBretagneCentreChampagne-ArdenneCorseDOM-TOMFranche-ComtéHaute-NormandieIle-de-FranceLanguedoc-RoussillonLimousinLorraineMidi-PyrénéesNord-Pas-de-CalaisPays de la LoirePicardiePoitou-CharentesProvence-Alpes-Côte d'AzurRhône-Alpes

您应该元素更新触发更新,在处理程序内…

 $(document).ready(function() { $(".chzn-select").chosen({no_results_text: "No results matched"}); var geolocationRegionSelect = $("#geolocationRegionSelect"); var geolocationDepartmentSelect = $("#geolocationDepartmentSelect"); geolocationRegionSelect.bind('change', function(event) { $.get("/kadjoukor/geolocations/findDepartmentsByRegion?regionId="+$(this).val(), function(result){ geolocationDepartmentSelect.empty(); $.each(result, function() { geolocationDepartmentSelect.append($("").val(this.id).text(this.department)); geolocationDepartmentSelect.trigger("liszt:updated"); // <--TO HERE }); }, 'json'); //<-FROM HERE }); }); 

http://jsfiddle.net/oceog/rQJeX/

你没有得到预期的结果,因为$ .get()这里是异步的,得到类比:

  • 你问你的妻子去邮局询问你应该为你父亲的年度杂志订阅多少钱,你告诉她 - “当你回到那张桌子上留言时,从这里删除旧纸条”(已经在桌子上) 100美元的票据,订阅是50美元)。
  • 她离开后,请你的母亲检查桌子上的一张纸条,然后交给你父亲让他付钱......
  • 你的问题等于 - “为什么我父亲付了100美元”?
  • 答案就是这样 - 你必须要求你的妻子告诉你的母亲给你父亲带来便条,因为你的妻子会刷新桌子上的笔记。

抱歉英语,如果需要,随时编辑。