解决方案 »

  1.   

    把你的$.ajax方法中的cache属性的值改成true试试
      

  2.   

    用一个变量把结果缓存起来,省的每次focus的时候都去加载数据。
    var city = null;
        $('#JobLocation').focus(function(){
                if(city){
                    prefectureFilling('geoShow',city);
                    return;
                }

               $.ajax({
                url: 'http://192.168.170.85:8080/awp/widget/Prefecture!getAll',
                dataType: 'jsonp',
                jsonp:'callback',
                cache:false,
                type:'GET',
                success: function(json) {
                    city = json.prefectureList;
                    prefectureFilling('geoShow',city);
                    $('#geoShow').show();
                }
               });
          });
      

  3.   

     
    谢谢咯,不过应该不是由于重复读取数据引起的问题,数据库里面一共才413条数据,关键是 在chrome里面正常,在FF里面稍微卡,在IE中就很卡了。我给里面省份的点击事件也没重复读取数据库。
      

  4.   

    把你的所有live方法都去掉。在最后append了以后,用class样式选择dom绑定事件。不知道你为什么要用这样的方式进行绑定事件,每个类似i的变量在事件触发后的函数体里也没有用到。就算用到这样写也不对。没有研究过jquery的源码,不过我想是事件代理到doucment上面,每次触发相应事件的时候去匹配调用了live方法选择器,有就执行对应的方法。你这样等于给doument重复绑定了N次事件。
      

  5.   

    1. 绑定事件不要嵌套在绑定事件里,应该是单一的。
    2. array.length应该缓存,不要这样写i < array.length。
    3. 循环用for(var i = array.length -1; i >= 0; i--);
    4. live事件能改成bind更好
    5. 地区数据短时间没有变化,可以做缓存,不需要每次都去后台取