这是仿照上篇的js方法修改的
先看下页面代码:

首頁 >web前端 >js教程 >jquery怎樣實作ajax連動框(二)_jquery

jquery怎樣實作ajax連動框(二)_jquery

WBOY
WBOY原創
2016-05-16 17:40:43920瀏覽

另一種形式的連動框,右邊的連動框用jquery產生
jquery怎樣實作ajax連動框(二)_jquery 
這是仿照上篇的js方法修改的
先看下頁碼:

複製程式碼 程式碼如下:


事發區:











頁面呼叫的js:
複製程式碼 程式碼如下:




對應的jquery.building.js 檔案如下:
複製程式碼 程式碼如下:

/*
Ajax 三級連動
日期:2013-2-26
settings 參數說明
-----
buildingUrl:大樓下拉資料取得URL, josn回傳
buildingValue:預設大樓下拉value
floorUrl:樓層資料取得URL,josn回傳
floorValue:預設樓層value
nodata:無資料狀態
required:必選項click🎜 :點擊時的回呼函數
------------------------------ */
(function($){
$.fn.building=function(settings){
if($(this).size()// 預設值
settings=$.extend ({
buildingUrl:"js/city.min.js",
floorUrl:"js/city.min.js",
buildingValue:null,
floorValue:null,
nodata :null,
required:true,
clickCallback:function(){}
},settings);
var box_obj=this;
var building_obj=box_obj.find(".building" );
var floor_obj=box_obj.find(".choose_floor");
var floorHidden_​​obj=box_obj.find(".choose_floor_hidden");
var floorPanel_objbox"); var select_prehtml=(settings.required) ? "" : "";
var prepareSelectHtml=function(jsonArray){
var temp_html=select_prehtml;
$.each(jsonArray,function(index,row){
temp_html ="";
}) ;
return temp_html;
};
var prepareFloorPanelHtml=function(jsonArray){
var temp_html=''
;
var count=0;
$.each(jsonArray,function(index,row){
if(count==0){
temp_html ='';
}
var otherAttr="";
if(row.other){
otherAttr="other=" row.other "";
}
temp_html ='';
if(count>0&&count%3==0){
temp_html ='';
count= -1;
}
count=count 1;
});
temp_html ='
' row.text '
';
return temp_html;
};
// 賦值二級下拉框函數
var createFloorPanel=function(){
floor_obj.val('點選選擇樓層');
floorHidden_​​obj.val('');
//floorPanel_obj.empty() ;
if(building_obj.val()==''){
return;
}
$.getJSON(settings.floorUrl, { buildingId: building_obj.val(), time: new Date ().getTime() }, function(jsonResult){
if(!jsonResult.success){
if(settings.nodata=="none"){
floorPanel_obj.css("display", "none");
}else if(settings.nodata=="hidden"){
floorPanel_obj.css("visibility","hidden");
};
return;
}
// 遍歷賦值二級下拉清單
floorPanel_obj.html(prepareFloorPanelHtml(jsonResult.data));
floorPanel_obj.find('td').click(function(>floorPanel_obj.find('td')。 /hide
var text = $(this).html();
var value = $(this).attr("floorId");
var other =$(this).attr("other ");
floor_obj.val(text);
floorHidden_​​obj.val(value);
floorPanel_obj.css("display","none");
settings.clickCallback(value,text,text) other);
});
/*$('body').filter('.choose_floor').click(function(){
alert(1)
floorPanel_obj.css(" display","none");
}); */
});

};

var init=function(){
// 遍歷賦值一級下拉列表
$.getJSON(settings.buildingUrl, {time: new Date().getTime() }, function(jsonResult){
if(!jsonResult.success){
return;
}
// 遍歷賦值一級下拉清單
building_obj.html(prepareSelectHtml(jsonResult.data));
createFloorPanel();
// 若有傳入大樓與樓層的值,則選中。 (setTimeout設定為相容IE6)
setTimeout(function(){
if(settings.buildingValue && settings.buildingValue.length>0){
building_obj.val(settings.buildingValue); createFloorPanel();
setTimeout(function(){
if(settings.floorValue!=null){
floor_obj.val(settings.floorValue);
};
},1) ;
};
},1);
});
// 選取一階時發生事件
building_obj.bind("change",function(){
createFloorPanelel ();
});
floor_obj.click(function(){
//show
//alert(floorPanel_obj.html())
//floorPanel_obj.css("heightcss("height ","100px");
//floorPanel_obj.css("width","100px");
//floorPanel_obj.css('floorNum'); floorel_obj.css("display" "block");
});
};
// 初始化第一個下拉框
init();
};
})(jQuery);


後台處理請求及回傳json資料:



複製程式碼
程式碼如下:

@RequestMapping("loadBuildings")
@ResponseBody
public Map; loadBuildings(ModelMap model){
String msg = ""; booleans List>>地圖=新的ArrayList>();
嘗試{
列表;建築物= geoAreaService.findBuildings();
for (GeoArea 建築物:建築物) {
Map; map=new HashMap();
map.put("value ",building.getId().toString());
map.put("text",building.getName());
maps.add(map);
}
msg = "查找資料夾成功。";
isSuccess=true;
} catch (Exception e) {
msg = "查找資料夾失敗。";
log.error("查找資料夾失敗:" e.getMessage(), e);
}
返回buildAjaxResult(isSuccess, msg,maps);
}
@RequestMapping("loadFloors")
}
@RequestMapping("loadFloors")
@ResponseBody
public Map; loadFloors(@RequestParam("buildingId")IntegerbuildingId,ModelMap model){
String msg = "";
boolean isSuccess = false;
List";
boolean isSuccess = false;
List>>地圖=新的ArrayList>();
嘗試{
列表;樓層= geoAreaService.findFloorById(buildingId);
for (地理區域樓層:樓層) {
地圖; map=new HashMap();
map.put("value", Floor.getId().toString());
map.put("text", Floor.getName());
map.put("其他", Floor.getCode());
maps.add(map);
}
msg = "尋找樓層成功。 ";
isSuccess=true;
} catch (Exception e) {
msg = "找出樓層失敗。 ";
log.error("查找樓層失敗:" e.getMessage(), e);
}
return buildAjaxResult(isSuccess, msg,maps);
}
受保護的Map buildAjaxResult(boolean isSuccess, String msg, Object data) {
Map; resultMap = new HashMap();
resultMap.put("成功", isSuccess);
resultMap.put("msg", msg);
resultMap.put("資料", 資料);
傳回結果對應;
} 搞定!
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn