实战项目:医院挂号网(ui组件开发)

11 篇文章 0 订阅
10 篇文章 0 订阅


本文所用的css名为ui.css,js名为ui.js
首页的html代码
如下

<!DOCTYPE html>
<html lang="zh-cn">
	<head>
		<meta charset="utf-8">
		<title>城市医院预约平台</title>
		<link rel="stylesheet" type="text/css" href="css/layout.css">
		<link rel="stylesheet" type="text/css" href="css/base.css"> 
		<link rel="stylesheet" type="text/css" href="css/ui.css"> 

	</head>
	<body>
		
		<div id="top" class="top">
			<div class="wrap">
				<p class="call">010-114/116114电话预约</p>
				<p class="welcome">欢迎来到城市预约挂号统一平台&nbsp;&nbsp;
				<a href="#">登录</a>
				<a href="#">注册</a>&nbsp;&nbsp;&nbsp;&nbsp;
				<a href="#">帮助中心</a>
				</p>
			</div>
		</div>
		
		<div id="header" class="header">
			<div class="wrap clearfix">
				<div class="logo">
					<a href="#" ><img src="./img/logo.png"></a>
				</div>
				<div class="search ui-search">
					<div class="ui-search-selected">医院</div>
					<div class="ui-search-select-list">
						<a href="#1">科室</a>
						<a href="#1">疾病</a>
						<a href="#1">医院</a>
					</div>
					<input  type="text" name="search-content" class="ui-search-input" placeholder="请输入搜索内容">
					<a href="#" class="ui-search-submit">&nbsp;</a>
				</div>
			</div>
		</div>
		
		<div id="nav" class="nav">
			<div class="wrap">
				<div href="#6" class="link menu">全部科室
					<div class="menu-list ui-menu">
						<div class="ui-menu-item">
							<a href="#1" class="ui-menu-item-department">内科</a>
							<a href="#2" class="ui-menu-item-disease">冠心病</a>
							<a href="#3" class="ui-menu-item-disease">高血压</a>
							<div class="ui-menu-item-detail">
								<div class="ui-menu-item-detail-group">
									<div class="ui-menu-item-detail-group-caption">内科</div>
									<div class="ui-menu-item-detail-group-list">
										<a href="#1">心脑血管疾病</a>
										<a href="#1">心脑血管疾病</a>
										<a href="#1">心脑血管疾病</a>
										<a href="#1">心脑血管疾病</a>
										<a href="#1">心脑血管疾病</a>
										<a href="#1">心脑血管疾病</a>
										<a href="#1">心脑血管疾病</a>
										<a href="#1">心脑血管疾病</a>
										<a href="#1">心脑血管疾病</a>
										<a href="#1">心脑血管疾病</a>
										<a href="#1">心脑血管疾病</a>
									</div>
									<div class="ui-menu-item-detail-group-caption">内科常见疾病</div>
									<div class="ui-menu-item-detail-group-list">
										<a href="#1">心脑血管疾病</a>
										<a href="#1">心脑血管疾病</a>
										<a href="#1">心脑血管疾病</a>
										<a href="#1">心脑血管疾病</a>
										<a href="#1">心脑血管疾病</a>
										<a href="#1">心脑血管疾病</a>
										<a href="#1">心脑血管疾病</a>
										<a href="#1">心脑血管疾病</a>
										<a href="#1">心脑血管疾病</a>
										<a href="#1">心脑血管疾病</a>
										<a href="#1">心脑血管疾病</a>
									</div>
							</div>
						</div>
						</div>	
					</div>
				</div>
				<a href="#" class="link">按医院挂号</a>
				<a href="#" class="link">按科室挂号</a>
				<a href="#" class="link">按疾病挂号</a>
				<a href="#" class="link">最新公告</a>
				<a href="#" class="link right">社会知名医院</a>
			</div>
		</div>
		
		<div id="banner" class="banner">
			
			<div class="banner-slider ui-slider">
				<div class="ui-slider-wrap">
					<a href="#0" class="item"><img src="img/banner_1.jpg" alt="banner-1"></a>
					<a href="#1" class="item"><img src="img/banner_2.jpg" alt="banner-2"></a>
					<a href="#2" class="item"><img src="img/banner_3.jpg" alt="banner-3"></a>
				</div>
				<div class="ui-slider-arrow">
					<a href="#l" class="item left">&nbsp;</a>
					<a href="#r" class="item right">&nbsp;</a>
				</div>
				<div class="ui-slider-process">
					<a href="#0" class="item item_focus">&nbsp;</a>
					<a href="#1" class="item">&nbsp;</a>
					<a href="#2" class="item">&nbsp;</a>
				</div>
			</div>
			<div class="banner-search">
				<div class="caption">
					<span class="text">
						快速预约
					</span>
				</div>
				<div class="form ui-cascading">
					<div class="line">
						<select name="area" data-search="getDistinctArea" data-where=""><option>医院地区</option></select>
					</div>
					<div class="line">
						<select name="level" data-search="getLevelByArea" data-where=""><option>医院等级1</option></select>
					</div>
					<div class="line">
						<select name="name" data-search="getNameByAreaAndLevel" data-where=""><option>医院名称2</option></select>
					</div>
					<div class="line">
						<select name="department" data-search="getDepartmentArrByHosptialName" data-where=""><option>医院科室3</option></select>
					</div>
				</div>
				<div class="submit">
					<input type="button" class="button" value="快速查询">
				</div>
			</div>
		     <div class="banner-help">
				 <div class="caption"><span class="text">帮助中心</span></div>
				 <div class="list">
					 <a href="#" class="link">账号指南</a>
					 <a href="#" class="link">预约指南</a>
					 <a href="#" class="link">账号找回</a>
					 <a href="#" class="link">常见问题</a>
				 </div>
			 </div>
			
		</div>
		
		<div id="content" class="content">
			<div class="wrap clearfix">
				<div class="content-tab">
					<div class="caption clearfix">
						<a href="#7" class="item item_focus">医院</a>
						<a href="#8" class="item">科室</a>
					</div>
					<div class="block">
						<div class="item">
							<div class="block-caption">
								<a href="#1" class="block-caption-item block-caption-item_foucs">全部</a>
								<a href="#1" class="block-caption-item">东城区</a>
								<a href="#1" class="block-caption-item">西城区</a>
								<a href="#1" class="block-caption-item">朝阳区</a>
								<a href="#1" class="block-caption-item">丰台区</a>
								<a href="#1" class="block-caption-item">石景山区</a>
								<a href="#1" class="block-caption-item">海淀区</a>
								<a href="#1" class="block-caption-item">门头沟区</a>
								<a href="#1" class="block-caption-item">房山区</a>
								<a href="#1" class="block-caption-item">其他</a>

							</div>
							<div class="block-content">
								<div class="block-wrap">
									<div class="block-list clearfix">
										
										<div class="item">
											<img src="img/hospital-1.jpg" alt="xx医院"/>
											<div class="item-name">北京协和医院<span class="
											item-level">[三级甲等]</span></div>
											<div class="item-phone">
												电话:东院咨询台:010-69155564..
											</div>
											<div class="item-address">[东院]
												北京市东城区帅府园一号 [西院]北京市西城区大木仓...
											</div>
										</div>
											<div class="item">
												<img src="img/hospital-1.jpg" alt="xx医院"/>
												<div class="item-name">北京协和医院<span class="
												item-level">[三级甲等]</span></div>
												<div class="item-phone">
													电话:东院咨询台:010-69155564..
												</div>
												<div class="item-address">[东院]
													北京市东城区帅府园一号 [西院]北京市西城区大木仓...
												</div>
											</div>

											<div class="item">
													<img src="img/hospital-1.jpg" alt="xx医院"/>
													<div class="item-name">北京协和医院<span class="
													item-level">[三级甲等]</span></div>
													<div class="item-phone">
														电话:东院咨询台:010-69155564..
													</div>
													<div class="item-address">[东院]
														北京市东城区帅府园一号 [西院]北京市西城区大木仓...
													</div>
												</div>
												<div class="item">
														<img src="img/hospital-1.jpg" alt="xx医院"/>
														<div class="item-name">北京协和医院<span class="
														item-level">[三级甲等]</span></div>
														<div class="item-phone">
															电话:东院咨询台:010-69155564..
														</div>
														<div class="item-address">[东院]
															北京市东城区帅府园一号 [西院]北京市西城区大木仓...
														</div>
												</div>
									</div>
									<div class="block-text-list clearfix">
										<a href="#9" class="item">首都儿科研究所附属儿童医院
										<span class="level">[三级甲等]</span></a>
										<a href="#9" class="item">首都儿科研究所附属儿童医院
										<span class="level">[三级甲等]</span></a>
										<a href="#9" class="item">首都儿科研究所附属儿童医院
										<span class="level">[三级甲等]</span></a>
										<a href="#9" class="item">首都儿科研究所附属儿童医院
										<span class="level">[三级甲等]</span></a>
										<a href="#9" class="item">首都儿科研究所附属儿童医院
										<span class="level">[三级甲等]</span></a>
										<a href="#9" class="item">首都儿科研究所附属儿童医院
										<span class="level">[三级甲等]</span></a>

									</div>
									<a href="#" class="block-more">更多医院</a>
								</div>
								<div class="block-wrap" style="display:none;">
									其他城区内容
								</div>

							</div>
						</div>
						<div class="item" style="display: none;">
							科室内容
						</div>
					</div>	
				</div>
				<div class="content-news">
					<div class="caption">最新公告<a href="#8" class="more">|更多</a></div>
					<div class="list">
						<a href="#9" class="link">首都医科大学附属北京安贞医院消...</a>
						<a href="#9" class="link">首都医科大学附属北京安贞医院妇...</a>
						<a href="#9" class="link">首都医科大学附属北京安贞医院消...</a>
						<a href="#9" class="link">首都医科大学附属北京安贞医院妇...</a>
						<a href="#9" class="link">首都医科大学附属北京安贞医院消...</a>
						<a href="#9" class="link">首都医科大学附属北京安贞医院妇...</a>
					</div>
				</div>
				<div class="content-close">
					<div class="caption">停诊公告<a href="#8" class="more">|更多</a></div>
					<div class="list">
						<a href="#9" class="link">首都医科大学附属北京安贞医院消...</a>
						<a href="#9" class="link">首都医科大学附属北京安贞医院妇...</a>
						<a href="#9" class="link">首都医科大学附属北京安贞医院消...</a>
						<a href="#9" class="link">首都医科大学附属北京安贞医院妇...</a>
						<a href="#9" class="link">首都医科大学附属北京安贞医院消...</a>
						<a href="#9" class="link">首都医科大学附属北京安贞医院妇...</a>
					</div>
				</div>
			</div>
		</div>
		
		<div id="footer" class="footer">
			Copyright © 2019林不羁版权所有
		</div>
	</body>
	<script src="js/jquery-1.7.1.min.js"></script>
	<script src="js/ui.js"></script>
	<script src="js/data.js"></script>
</html>

1 首页.UI组件-UiSearch

引用js,css
在这里插入图片描述

1.1 代码

/* 搜索 */
.ui-search{
	background:url(../img/ui-search.jpg);
	font-size:14px;
	color:#fff;
	position: relative;
}
.ui-search-selected{
	width:70px;
	height: 38px;
	line-height: 38px;
	position: absolute;
	left:0;
	top:0;
	text-indent: 14px;
}
.ui-search-select-list{
	position: absolute;
	width:67px;
	line-height: 24px;
	background-color:#fff;
	box-shadow:3px 3px 5px rgba(0,0,0,.2);
	left:2px;
	top:36px;
	z-index: 2;
}
.ui-search-select-list a{
	display: block;
	color:#a5a2a2;
	text-align: center;
}
.ui-search-select-list a:hover{
	background-color: #ebeef5;
}
.ui-search-input{
	width:208px;
	height: 26px;
	position: absolute;
	top:3px;
	left:71px;
	line-height: 26px;
	font-size:13px;
	color:#a5a2a2;
}
.ui-search-submit{
	display: block;
	width:40px;
	height: 36px;
	right: 0;
	top:1px;

}
//函数的定义
$.fn.UiSearch=function(){
    var ui=$(this);
    $(".ui-search-selected",ui).on("click",function(){//在ui中查找.ui-search-selected
        $(".ui-search-select-list").show();
        
        return false;//避免产生死循环,使得组件的效果无法显示
    });

    $(".ui-search-select-list a",ui).on("click",function(){
        $(".ui-search-selected").text($(this).text());
        $(".ui-search-select-list").hide();
       return false;
    });

    $("body").on("click",function(){
        $(".ui-search-select-list").hide();
    });
}
//页面的脚本逻辑
$(function(){
   $(".ui-search").UiSearch();
   });

2.首页.UI组件-UiTab

2.1 代码

/*UiTab*/
.ui-menu-item{
	height: 22px;
	line-height: 22px;
	padding: 8px 5px 9px 6px;
	margin-left:2px;
}
.ui-menu-item:hover{
	background-color: #fff;

}
.ui-menu-item-department{
	float: left;
	height: 22px;
	line-height: 22px;
	position: relative;
	padding-left:30px;
	font-size: 14px;
	color:#eee;
}
.ui-menu-item-department:before{
	content: ' ';
	display: block;
	height: 21px;
	width: 22px;
	position: absolute;
	left:0;
	top:1px;
	background:url('../img/icon-menu.jpg') no-repeat -22px 0;
}
.ui-menu-item-disease{
	font-size:12px;
	float: right;
	padding-left: 5px;
	color:#d7f3ff;
}
.ui-menu-item:hover .ui-menu-item-department:before{
	background-position-x:  0;
}
.ui-menu-item:hover .ui-menu-item-department{
	color:#333;
}
.ui-menu-item:hover .ui-menu-item-disease{
	color: #868686;
}
.ui-menu-item:hover .ui-menu-item-detail{
	display: block;
  }
.ui-menu-item-detail{
	display: none;
	position: absolute;
	width:500px;
	height: 392px;
	padding:20px 10px 10px 29px ;
	background: #fff url(../img/bg-menu.jpg) center no-repeat;
	left:190px;
	top:0;
}
.ui-menu-item-detail-group{
	padding-bottom: 20px;
	text-align: left;
}
.ui-menu-item-detail-group-caption{
	display: block;
	height: 34px;
	line-height: 34px;
	font-size: 16px;
	color:#666;
	width: 100%;
}
.ui-menu-item-detail-group-list{
	line-height: 23px;
}
.ui-menu-item-detail-group-list a{
	display: inline-block;
	font-size: 12px;
	color:#868686;
	margin-right: 8px;
	padding-bottom: 5px;

}
.ui-menu-item-detail-group-list a:hover{
	color: #006db3;
}
.ui-menu-item-detail-group a:after{
	content: "|";
	color:#eee;
	padding-left:8px;
}
/*ui-tab 定规
@param {string} header TAB组件,的所有选项卡 item
@param {string} content TAB组件,内容区域,所有 item
@param {string} focus_prefix 选项卡高亮样式前缀,可选
 */
$.fn.UiTab= function(header,content,focus_prefix){
    var ui=$(this);
    var tabs=$(header,ui);
    var cons=$(content,ui);
    var focus_prefix=focus_prefix || '';
    tabs.on('click',function(){
        var index=$(this).index();
        tabs.removeClass(focus_prefix+'item_focus').eq(index).addClass(focus_prefix+'item_focus');
        cons.hide().eq(index).show();

        return false;
    });

}
//页面的脚本逻辑
$(function(){
   $(".ui-search").UiSearch();

   $('.content-tab').UiTab('.caption > .item','.block > .item');
   $('.content-tab .block .item').UiTab('.block-caption > a','.block-content > .block-wrap')

});

2.2 注意点

1.子孙选择符,子代选择符(父子关系)要加>

2.遇到的问题,tab切换时item-focus中的背景色不起作用
解决:class名item_focus写成了item-focus

3.知识点:
eq() 方法返回带有被选元素的指定索引号的元素。
索引号从 0 开头,所以第一个元素的索引号是 0(不是 1)。
例子:$(“p”).eq(1).css(“background-color”,“yellow”);

3.首页.UI组件-UiBackTop

3.1 代码

图片
用到的图片

/* 回到顶部 */
.ui-backTop{
	display: none;
	position: fixed;
	right:2px;
	bottom:2px;
	z-index:9;
	width:40px;
	height: 40px;
	color:#fff;
	background: rgba(102,102, 102, .9) url(../img/icon-go-up.png) center no-repeat;

}
.ui-backTop:hover{
	background: rgba(102,102, 102, .9);
}
.ui-backTop:hover:after{
	content: '回到顶部';
	display: block;
	line-height: 20px;
	text-align: center;

}

/*ui-backTop*/
$.fn.UiBackTop=function(){
    var ui = $(this);
    var el = $('<a href="#0" class="ui-backTop"></a>');
    ui.append( el );
    var windowHeight = $(window).height();

    $(window).on('scroll',function(){
        var top=document.body.scrollTop==0?document.documentElement.scrollTop:document.body.scrollTop;//保证不同浏览器的兼容性
        
        if(top > 400){//windowHeight(还是需要重新解决这个问题)
            el.show();
        }else{
            el.hide();
        }
           
    });
    el.on('click',function(){
        $(window).scrollTop(0);
    })    
}

//页面的脚本逻辑
$(function(){
   $(".ui-search").UiSearch();

   $('.content-tab').UiTab('.caption > .item','.block > .item');
   $('.content-tab .block .item').UiTab('.block-caption > a','.block-content > .block-wrap')

   $('body').UiBackTop();

});

3.2 注意要点

js处理回到顶部
1.scrollTop() 方法设置或返回被选元素的垂直滚动条位置。

提示:当滚动条位于最顶部时,位置是 0。

2.问题:用于显示回到顶部的a标签在滑到窗体底部时没有显示出来
进一步发现问题:在滚动条滑动时,每一次取到的scrollTop值都是0

可供参考的文章:https://www.jianshu.com/p/46087c0ace05
js:关于scrollHeight和scrollTop取值为0的问题

初步原因是top值永远小于window.height
终极原因:var top1=document.body.scrollTop==0?document.documentElement.scrollTop:document.body.scrollTop;//保证不同浏览器的兼容性 ------可以
// var top=$(‘body’).scrollTop();一直是0的原因是浏览器兼容性的问题
参考:http://sc.chinaz.com/jiaobendemo.aspx?downloadid=1392792100509
回到顶部的插件,之后再研究一下

4.首页.UI组件-UiSlider

4.1 代码

/* ui-slider 幻灯片组件 */
.ui-slider{
	width:544px;
	height: 414px;
	position: relative;
	overflow: hidden;
}

.ui-slider-wrap{
	width: 99999px;
	height: 414px;
	position: absolute;
	left:0;
	right:0;
	transition: all .5s;

}
.ui-slider-wrap .item{
	display: block;
	width: 544px;
	height: 414px;
	float: left;
}
.ui-slider-arrow{
	width: 544px;
	height: 40px;
	position: absolute;
	top:50%;
	margin-top:-20px;
}
.ui-slider-arrow .item{
	display: block;
	width:40px;
	height: 40px;
	position: absolute;
	top:0;
	background: url(../img/ui-slider-arrow.png) no-repeat;
}
.ui-slider-arrow .left{
	left:0;
}
.ui-slider-arrow .right{
	right:0;
	background-position: -40px 0;
}
.ui-slider-process{
	width: 544px;
	height: 12px;
	text-align:center;
	position: absolute;
	left:0;
	bottom:20px;

}
.ui-slider-process .item{
	display: inline-block;
	width:16px;
	height:16px;
	background: url(../img/ui-slider-process.png) no-repeat;
}

.ui-slider-process .item_focus,
.ui-slider-process .item:hover{
	background-position: -23px 0;
}
// ui-slidder

// 1. 左右箭头需要能控制翻页
// 2. 翻译的时候,进度点,要联动进行focus
// 3. 翻到第三页的时候,下一页需要回到第一页,翻到第一页的时候,同理
// 4. 进度点,在点击的时候,需要切换到对应的页面
// 5. 没有 (进度点点击,翻页操作) 的时候需要进行自动滚动
// 6. 滚动过程中,屏蔽其他操作 (自动滚动/左右翻页/进度点点击)
// 7.高级(无缝隙滚动)

$.fn.UiSlider = function(){
    var ui = $(this);
    var wrap = $('.ui-slider-wrap');

    var btn_prev = $('.ui-slider-arrow .left',ui);
    var btn_next = $('.ui-slider-arrow .right',ui);

    var items = $('.ui-slider-wrap .item',ui);
    var tips = $('.ui-slider-process .item',ui);

    // 预定义

    var current = 0;
    var size = items.size();
    var width = items.eq(0).width();
    var enableAuto =true;

    //设置自动滚动感应(如果鼠标在wrap中,不要自动滚动)
    ui
    .on('mouseover',function(){
        enableAuto=false;
    })
    .on('mouseout',function(){
        enableAuto=true;
    })

    // 具体操作
    wrap
    .on('move_prev',function(){
        if(current <= 0){
            current = size;
        }
        current = current - 1;
        wrap.triggerHandler('move_to',current);
    })
    .on('move_next',function(){
        if(current >= size - 1){
            current = -1;
        }
        current = current + 1;
        wrap.triggerHandler('move_to',current);
    })
    .on('move_to',function(event,index){
        wrap.css('left',index*width*-1);
        tips.removeClass('item_focus').eq(index).addClass('item_focus');
    })
    .on('auto_move',function(){
        setInterval(() => {
            enableAuto && wrap.triggerHandler('move_next');
        }, 2000);
    })
    .triggerHandler('auto_move');//一直调用auto_move函数

    //事件
    btn_prev.on('click',function(){
        wrap.triggerHandler('move_prev');
    });
    btn_next.on('click',function(){
        wrap.triggerHandler('move_next');
    });
    tips.on('click',function(){
        var index=$(this).index();
        wrap.triggerHandler('move_to',index);
    })

}
//页面的脚本逻辑
$(function(){
   $(".ui-search").UiSearch();

   $('.content-tab').UiTab('.caption > .item','.block > .item');
   $('.content-tab .block .item').UiTab('.block-caption > a','.block-content > .block-wrap')

   $('body').UiBackTop();

   $('.ui-slider').UiSlider();

});

4.2 注意要点

1.overflow属性指定如果内容溢出一个元素的框,会发生什么。

visible 默认值。内容不会被修剪,会呈现在元素框之外。
hidden 内容会被修剪,并且其余内容是不可见的。
scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
inherit 规定应该从父元素继承 overflow 属性的值。


2.文字居中可使用line-height
一个div居中可使用margin-top 负边距的方法来实现

3.轮播图的左右箭头图片位置重叠的问题
因为.ui-slider-arrow .item 中设置了left:0;
 
在这种情况下 right中的right:0;就不起作用了.

4.background-position属性设置背景图像的起始位置。
一般都是left,top
例子(background-position: -50px 100px;)
0,0是左上角

5.transition 属性设置元素的过渡效果
例子:
div
{
width:100px;
height:100px;
background:red;
transition:width 2s;
-webkit-transition:width 2s; /* Safari */
}
div:hover
{
width:300px;
}
2s过程中将width变成300px

6.https://www.runoob.com/jquery/event-triggerhandler.html
==triggerHandler() ==方法触发被选元素上指定的事件。

该方法的返回的是事件处理函数的返回值,而不是具有可链性的 jQuery 对象。此外,如果没有处理程序被触发,则这个方法返回 undefined。

7.==setInterval() ==方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。

setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。

setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。(不会重复)

8.调试时输入argumens可以查看函数传入的参数

5.首页.UI组件-UiCascading 多级联动菜单

5.1 代码

data.js(模拟数据)


var storage = {};

storage.hospital = [
    ['area','level','type','name','address','phone','imgUrl','time'],
    ['朝阳区','三级甲等','卫生部直属医院','首都儿科研究所附属儿童医院','北京市朝阳区雅宝路2号','84305488'],
    ['朝阳区','三级甲等','卫生部直属医院','中日友好医院','北京市朝阳区樱花东路2号','84305488'],
    ['西城区','三级甲等','卫生部直属医院','首都医科大学附属北京友谊医院','北京市西城区永安路95号','84305488'],
    ['朝阳区','三级甲等','卫生部直属医院','首都医科大学附属北京地坛医院B附属','北京市朝阳区樱花东路95号','84305488'],
    ['朝阳区','三级合格','北京区县属医院','空军总医院','北京市西城区永安路95号','84305488'],
    ['海淀区','三级合格','北京区县属医院','航天中心医院(原721医院)','北京市海淀区玉泉路15号','84305488'],
    ['丰台区','三级甲等','北京区县属医院','北京中医药大学东方医院','北京市丰台区方庄芳星园一区6号','84305488'],

    ['丰台区','三级合格','北京区县属医院','北京电力医院','北京市丰台区太平桥西里甲1号','84305488'],
    ['顺义区','三级甲等','北京区县属医院','北京中医医院顺义医院','北京市顺义区站前东街5号','84305488'],
    ['通州区','三级甲等','其它','首都医科大学附属北京潞河医院三级综合医院','北京市通州区新华南路8号','84305488'],
  
];

storage.department = [
    ["hospitalName",['departmentName']],

    ['首都儿科研究所附属儿童医院',['儿科a','儿科b','儿科c']],
    ['中日友好医院',['科室a','科室b','科室c','科室d']],
    ['首都医科大学附属北京友谊医院',['departmentName-0']],
    ['首都医科大学附属北京地坛医院B附属',['departmentName-1']],

    ['空军总医院',['departmentName-2']],
    ['航天中心医院(原721医院)',['departmentName-3']],
    ['北京中医药大学东方医院',['departmentName-4']],
    ['北京电力医院',['departmentName-5']],
    ['北京中医医院顺义医院',['departmentName-6']],
    ['首都医科大学附属北京潞河医院三级综合医院',['departmentName-7']],

];

var AjaxRemoteGetData = {};

AjaxRemoteGetData.getDistinctArea = function(){
    console.log('远程数据获取','getDistinctArea');

    var map = {};
    var arr = ['医院地区'];
    for(i=1,j=storage.hospital.length;i<j;i++){
        var _d = storage.hospital[i][0];
        map[_d]=1;//?
    }
    for(k in map){
        arr.push(k);
    }
    console.log('结果',arr);
    return arr;
}
AjaxRemoteGetData.getLevelByArea = function( area ){
    var map = {};
    var arr = ['医院等级'];
    for(i=1,j=storage.hospital.length; i<j ; i++){

        var _area = storage.hospital[i][0];
        var level = storage.hospital[i][1];
        if(area == _area){
            map[level] = 1;
        }
    }
    for( k in map){
        arr.push(k);
    }
    console.log('结果',arr);
    return arr;
}
AjaxRemoteGetData.getNameByAreaAndLevel = function( area , level ){
    console.log('远程数据获取','getNameByAreaAndLevel','arguments:',arguments);
    var map = {};
    var arr = ['医院名称'];
    for(i=1,j=storage.hospital.length;i<j;i++){
        var _level = storage.hospital[i][1];
        var hosptialName = storage.hospital[i][3];
        var _area=storage.hospital[i][0];
        if(level == _level&&area==_area){
            map[hosptialName] = 1;
        }
    } 
    for( k in map){
        arr.push(k);
    }
    console.log('结果',arr);
    return arr;
}
AjaxRemoteGetData.getDepartmentArrByHosptialName = function( area,level,hospitalName){
    console.log('远程数据获取','getDepartmentArrByHosptialName','arguments:',arguments);
    var map = {};
    var arr = ['科室名称'];
    for(i=1,j=storage.department.length;i<j;i++){
        var _hosptialName = storage.department[i][0];
        
        var _d = storage.department[i][1];
        var _dlen=_d.length;
        for(k=0;k<_dlen;k++)
        {
            if(hospitalName == _hosptialName){
                map[_d[k]] = 1;
            }
        }
        
    } 
    for( k in map){
        arr.push(k);
    }
    console.log('结果',arr);
    return arr;
}

//UiCascading
$.fn.UiCascading = function(){
    var ui = $(this);
    var selects = $('select',ui);

    selects
    .on('change',function(){
        var val = $(this).val();
        var index = selects.index(this);

        //触发一下个 select 的更新,根据当前的值
        var where =$(this).attr('data-where');
        where = where ? where.split(',') :[];
        where.push( $(this).val());

        selects.eq(index+1)
        .attr('data-where',where.join(','))
        .triggerHandler('reloadOptions');

        //触发下一个之后的select 的初始化(清除不应该的数据项)
        ui.find('select:gt('+(index+1)+')').each(function(){
            $(this)
            .attr('data-where','')
            .triggerHandler('reloadOptions');
        })
    })
    .on('reloadOptions',function(){
        var method = $(this).attr("data-search");
        var args = $(this).attr('data-where').split(',');
        var data= AjaxRemoteGetData[ method ].apply(this,args);
        var select =$(this);
        select.find('option').remove();
        
        $.each(data,function(i,item){
            var el = $('<option  value="'+item+'">'+item+'</option>');
            select.append(el);
        });
    
       
    })
    selects.eq(0).triggerHandler('reloadOptions');
}

//页面的脚本逻辑
$(function(){
   $(".ui-search").UiSearch();

   $('.content-tab').UiTab('.caption > .item','.block > .item');
   $('.content-tab .block .item').UiTab('.block-caption > a','.block-content > .block-wrap')

   $('body').UiBackTop();

   $('.ui-slider').UiSlider();
   $('.ui-cascading').UiCascading();

});

5.2 注意要点

html页面中select中的属性
data-search:调取数据的接口名称
data-where:传入接口的参数

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值