Commit f4c3e3d2 authored by hbcui1984's avatar hbcui1984

增加“问题反馈”示例

parent cf92c3d8
......@@ -4223,6 +4223,7 @@ var mui = (function(document, undefined) {
self.gotoItem((e.detail.tabNumber || 0), self.options.bounceTime);
},
_handleIndicatorTap: function(event) {
var self = this;
var target = event.target;
if (target.classList.contains(CLASS_ACTION_PREVIOUS) || target.classList.contains(CLASS_ACTION_NEXT)) {
self[target.classList.contains(CLASS_ACTION_PREVIOUS) ? 'prevItem' : 'nextItem']();
......
This source diff could not be displayed because it is too large. You can view the blob instead.
.mui-group-list {
.mui-indexed-list {
position: relative;
border-top: solid 1px #e3e3e3;
border-bottom: solid 1px #e3e3e3;
......@@ -7,62 +7,62 @@
height: 300px;
cursor: default;
}
.mui-group-list-inner {
.mui-indexed-list-inner {
margin: 0px;
padding: 0px;
overflow-y: auto;
border: none;
}
.mui-group-list-inner::-webkit-scrollbar {
.mui-indexed-list-inner::-webkit-scrollbar {
width: 0px;
height: 0px;
visibility: hidden;
}
.mui-group-list-empty-alert,
.mui-group-list-inner.empty ul {
.mui-indexed-list-empty-alert,
.mui-indexed-list-inner.empty ul {
display: none;
}
.mui-group-list-inner.empty .mui-group-list-empty-alert {
.mui-indexed-list-inner.empty .mui-indexed-list-empty-alert {
display: block;
}
.mui-group-list-empty-alert {
.mui-indexed-list-empty-alert {
padding: 30px 15px;
text-align: center;
color: #ccc;
padding-right: 45px;
}
.mui-ios .mui-group-list-inner {
.mui-ios .mui-indexed-list-inner {
width: calc(100% + 10px);
}
.mui-group-list-group,
.mui-group-list-item {
.mui-indexed-list-group,
.mui-indexed-list-item {
padding-right: 45px;
}
.mui-ios .mui-group-list-group,
.mui-ios .mui-group-list-item,
.mui-ios .mui-group-list-empty-alert {
.mui-ios .mui-indexed-list-group,
.mui-ios .mui-indexed-list-item,
.mui-ios .mui-indexed-list-empty-alert {
padding-right: 55px;
}
.mui-group-list-group {
.mui-indexed-list-group {
background-color: #f7f7f7;
}
.mui-group-list-group {
.mui-indexed-list-group {
padding-top: 3px;
padding-bottom: 3px;
}
.mui-group-list-search {
.mui-indexed-list-search {
border-bottom: solid 1px #e3e3e3;
z-index: 15;
}
.mui-group-list-search.mui-search:before {
.mui-indexed-list-search.mui-search:before {
margin-top: -10px;
}
.mui-group-list-search input {
.mui-indexed-list-search input {
border-radius: 0px;
margin: 0px;
background-color: #fafafa;
}
.mui-group-list-bar {
.mui-indexed-list-bar {
width: 23px;
background-color: lightgrey;
position: absolute;
......@@ -71,7 +71,7 @@
right: 0px;
-webkit-transition: .2s;
}
.mui-group-list-bar a {
.mui-indexed-list-bar a {
display: block;
text-align: center;
font-size: 11px;
......@@ -80,16 +80,16 @@
line-height: 15px;
color: #aaa;
}
.mui-group-list-bar.active {
.mui-indexed-list-bar.active {
background-color: rgb(200,200,200);
}
.mui-group-list-bar.active a {
.mui-indexed-list-bar.active a {
color: #333;
}
.mui-group-list-bar.active a.active {
.mui-indexed-list-bar.active a.active {
color: #007aff;
}
.mui-group-list-alert {
.mui-indexed-list-alert {
position: absolute;
z-index: 20;
background-color: rgba(0, 0, 0, 0.5);
......@@ -107,6 +107,6 @@
display: none;
-webkit-transition: .2s;
}
.mui-group-list-alert.active {
.mui-indexed-list-alert.active {
display: block;
}
\ No newline at end of file
......@@ -46,20 +46,13 @@
}
.mui-preview-image.mui-preview-in {
display: block;
-webkit-animation: previewImageIn 400ms forwards;
animation: previewImageIn 400ms forwards;
}
.mui-preview-image.mui-preview-out {
-webkit-animation: previewImageOut 400ms forwards;
animation: previewImageOut 400ms forwards;
.mui-preview-image.mui-transitioning {
background: none;
}
.mui-android-4-1 .mui-preview-image.mui-preview-in {
-webkit-animation: previewImageIn 0.001s forwards;
animation: previewImageIn 0.001s forwards;
}
.mui-android-4-1 .mui-preview-image.mui-preview-out {
-webkit-animation: previewImageOut 0.001s forwards;
animation: previewImageOut 0.001s forwards;
.mui-preview-image.mui-transitioning .mui-preview-header,
.mui-preview-image.mui-transitioning .mui-preview-footer {
display: none;
}
.mui-zoom-scroller {
position: absolute;
......@@ -98,46 +91,6 @@
.mui-android-4-1 .mui-slider .mui-slider-group .mui-slider-item img {
width: 100%;
}
@-webkit-keyframes previewImageIn {
0% {
-webkit-transform: translate3d(0, 0, 0) scale(0.5);
opacity: 0;
}
100% {
-webkit-transform: translate3d(0, 0, 0) scale(1);
opacity: 1;
}
}
@keyframes previewImageIn {
0% {
transform: translate3d(0, 0, 0) scale(0.5);
opacity: 0;
}
100% {
transform: translate3d(0, 0, 0) scale(1);
opacity: 1;
}
}
@-webkit-keyframes previewImageOut {
0% {
-webkit-transform: translate3d(0, 0, 0) scale(1);
opacity: 1;
}
100% {
-webkit-transform: translate3d(0, 0, 0) scale(0.5);
opacity: 0;
}
}
@keyframes previewImageOut {
0% {
transform: translate3d(0, 0, 0) scale(1);
opacity: 1;
}
100% {
transform: translate3d(0, 0, 0) scale(0.5);
opacity: 0;
}
}
.mui-android-4-1 .mui-slider.mui-preview-image .mui-slider-group .mui-slider-item {
display: inline-table;
}
......@@ -145,6 +98,30 @@
display: table-cell;
vertical-align: middle;
}
.mui-preview-loading {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
display: none;
}
.mui-preview-loading.mui-active {
display: block;
}
.mui-preview-loading .mui-spinner-white {
position: absolute;
top: 50%;
left: 50%;
margin-left: -25px;
margin-top: -25px;
height: 50px;
width: 50px;
}
.mui-preview-image img.mui-transitioning {
-webkit-transition: -webkit-transform 0.5s ease, opacity 0.5s ease;
transition: transform 0.5s ease, opacity 0.5s ease;
}
</style>
</head>
......@@ -160,7 +137,7 @@
<p>
<img src="../images/yuantiao.jpg" data-preview-src="" data-preview-group="1" />
</p>
<p>图片全屏后,左右滑动可查看本页其它图片,点击会关闭预览</p>
<p>图片全屏后,双击或双指缩放均可对图片进行放大、缩小操作,左右滑动可查看同组(data-preview-group相同的图片为一组)其它图片,点击会关闭预览</p>
<p>
<img src="../images/muwu.jpg" data-preview-src="" data-preview-group="1" />
</p>
......@@ -168,25 +145,6 @@
<p>
<img src="../images/shuijiao.jpg" data-preview-src="" data-preview-group="1" />
</p>
<!--<ul class="mui-table-view mui-grid-view">
<li class="mui-table-view-cell mui-media mui-col-xs-4">
<a href="#">
<img class="mui-media-object" src="../images/shuijiao.jpg">
</a>
</li>
<li class="mui-table-view-cell mui-media mui-col-xs-4">
<a href="#">
<img class="mui-media-object" src="../images/muwu.jpg">
</a>
</li>
<li class="mui-table-view-cell mui-media mui-col-xs-4">
<a href="#">
<img class="mui-media-object" src="../images/cbd.jpg">
</a>
</li>
</ul>-->
</div>
</div>
</body>
......
......@@ -30,11 +30,11 @@
<button id='done' class="mui-btn mui-pull-right mui-btn-blue">完成</button>
</header>
<div class="mui-content">
<div id='list' class="mui-group-list">
<div class="mui-group-list-search mui-input-row mui-search">
<input type="search" class="mui-input-clear mui-group-list-search-input" placeholder="搜索机场">
<div id='list' class="mui-indexed-list">
<div class="mui-indexed-list-search mui-input-row mui-search">
<input type="search" class="mui-input-clear mui-indexed-list-search-input" placeholder="搜索机场">
</div>
<div class="mui-group-list-bar">
<div class="mui-indexed-list-bar">
<a>A</a>
<a>B</a>
<a>C</a>
......@@ -62,191 +62,191 @@
<a>Y</a>
<a>Z</a>
</div>
<div class="mui-group-list-alert"></div>
<div class="mui-group-list-inner">
<div class="mui-group-list-empty-alert">没有数据</div>
<div class="mui-indexed-list-alert"></div>
<div class="mui-indexed-list-inner">
<div class="mui-indexed-list-empty-alert">没有数据</div>
<ul class="mui-table-view">
<li data-group="A" class="mui-table-view-divider mui-group-list-group">A</li>
<li data-value="AKU" data-tags="AKeSu" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>阿克苏机场</li>
<li data-value="BPL" data-tags="ALaShanKou" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>阿拉山口机场</li>
<li data-value="AAT" data-tags="ALeTai" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>阿勒泰机场</li>
<li data-value="NGQ" data-tags="ALiKunSha" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>阿里昆莎机场</li>
<li data-value="AQG" data-tags="AnQingTianZhuShan" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>安庆天柱山机场</li>
<li data-value="MFM" data-tags="AoMenGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>澳门国际机场</li>
<li data-group="B" class="mui-table-view-divider mui-group-list-group">B</li>
<li data-value="BSD" data-tags="BaoShan" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>保山机场</li>
<li data-value="BAV" data-tags="BaoTou" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>包头机场</li>
<li data-value="BHY" data-tags="BeiHaiFuCheng" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>北海福成机场</li>
<li data-value="NAY" data-tags="BeiJingNanYuan" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>北京南苑机场</li>
<li data-value="PEK" data-tags="BeiJingShouDuGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>北京首都国际机场</li>
<li data-group="C" class="mui-table-view-divider mui-group-list-group">C</li>
<li data-value="NBS" data-tags="ChangBaiShan" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>长白山机场</li>
<li data-value="CGQ" data-tags="ChangChunLongJiaGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>长春龙嘉国际机场</li>
<li data-value="CGD" data-tags="ChangDeTaoHuaYuan" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>常德桃花源机场</li>
<li data-value="BPX" data-tags="ChangDuBangDa" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>昌都邦达机场</li>
<li data-value="CSX" data-tags="ChangShaHuangHuaGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>长沙黄花国际机场</li>
<li data-value="CIH" data-tags="ChangZhiWangCun" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>长治王村机场</li>
<li data-value="CZX" data-tags="ChangZhouBenNiu" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>常州奔牛机场</li>
<li data-value="CTU" data-tags="ChengDuShuangLiuGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>成都双流国际机场</li>
<li data-value="CIF" data-tags="ChiFeng" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>赤峰机场</li>
<li data-group="D" class="mui-table-view-divider mui-group-list-group">D</li>
<li data-value="DLU" data-tags="DaLi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>大理机场</li>
<li data-value="DLC" data-tags="DaLianZhouShuiZiGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>大连周水子国际机场</li>
<li data-value="DQA" data-tags="DaQingSaErTu" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>大庆萨尔图机场</li>
<li data-value="DAT" data-tags="DaTongDongWangZhuang" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>大同东王庄机场</li>
<li data-value="DAX" data-tags="DaZhouHeShi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>达州河市机场</li>
<li data-value="DDG" data-tags="DanDongLangTou" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>丹东浪头机场</li>
<li data-value="LUM" data-tags="DeHongMangShi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>德宏芒市机场</li>
<li data-value="DIG" data-tags="DiQingXiangGeLiLa" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>迪庆香格里拉机场</li>
<li data-value="DOY" data-tags="DongYing" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>东营机场</li>
<li data-value="DNH" data-tags="DunHuang" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>敦煌机场</li>
<li data-group="E" class="mui-table-view-divider mui-group-list-group">E</li>
<li data-value="DSN" data-tags="EErDuoSi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>鄂尔多斯机场</li>
<li data-value="ENH" data-tags="EnShiXuJiaPing" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>恩施许家坪机场</li>
<li data-value="ERL" data-tags="ErLianHaoTeSaiWuSuGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>二连浩特赛乌苏国际机场</li>
<li data-group="F" class="mui-table-view-divider mui-group-list-group">F</li>
<li data-value="FUG" data-tags="FuYangXiGuan" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>阜阳西关机场</li>
<li data-value="FOC" data-tags="FuZhouChangLeGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>福州长乐国际机场</li>
<li data-group="G" class="mui-table-view-divider mui-group-list-group">G</li>
<li data-value="KOW" data-tags="GanZhouHuangJin" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>赣州黄金机场</li>
<li data-value="GOQ" data-tags="GeErMu" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>格尔木机场</li>
<li data-value="GYU" data-tags="GuYuanLiuPanShan" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>固原六盘山机场</li>
<li data-value="GYS" data-tags="GuangYuanPanLong" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>广元盘龙机场</li>
<li data-value="CAN" data-tags="GuangZhouBaiYunGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>广州白云国际机场</li>
<li data-value="KWL" data-tags="GuiLinLiangJiangGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>桂林两江国际机场</li>
<li data-value="KWE" data-tags="GuiYangLongDongBaoGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>贵阳龙洞堡国际机场</li>
<li data-group="H" class="mui-table-view-divider mui-group-list-group">H</li>
<li data-value="HRB" data-tags="HaErBinTaiPingGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>哈尔滨太平国际机场</li>
<li data-value="HMI" data-tags="HaMi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>哈密机场</li>
<li data-value="HAK" data-tags="HaiKouMeiLanGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>海口美兰国际机场</li>
<li data-value="HLD" data-tags="HaiLaErDongShanGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>海拉尔东山国际机场</li>
<li data-value="HDG" data-tags="HanDan" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>邯郸机场</li>
<li data-value="HZG" data-tags="HanZhong" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>汉中机场</li>
<li data-value="HGH" data-tags="HangZhouXiaoShanGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>杭州萧山国际机场</li>
<li data-value="HFE" data-tags="HeFeiLuoGangGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>合肥骆岗国际机场</li>
<li data-value="HTN" data-tags="HeTian" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>和田机场</li>
<li data-value="HEK" data-tags="HeiHe" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>黑河机场</li>
<li data-value="HET" data-tags="HuHeHaoTeBaiTaGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>呼和浩特白塔国际机场</li>
<li data-value="HIA" data-tags="HuaiAnLianShui" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>淮安涟水机场</li>
<li data-value="TXN" data-tags="HuangShanTunXiGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>黄山屯溪国际机场</li>
<li data-group="J" class="mui-table-view-divider mui-group-list-group">J</li>
<li data-value="TNA" data-tags="JiNanYaoQiangGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>济南遥墙国际机场</li>
<li data-value="JNG" data-tags="JiNingQuFu" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>济宁曲阜机场</li>
<li data-value="JXA" data-tags="JiXiXingKaiHu" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>鸡西兴凯湖机场</li>
<li data-value="JMU" data-tags="JiaMuSiDongJiao" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>佳木斯东郊机场</li>
<li data-value="JGN" data-tags="JiaYuGuan" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>嘉峪关机场</li>
<li data-value="JNZ" data-tags="JinZhouXiaoLingZi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>锦州小岭子机场</li>
<li data-value="JDZ" data-tags="JingDeZhen" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>景德镇机场</li>
<li data-value="JGS" data-tags="JingGangShan" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>井冈山机场</li>
<li data-value="JIU" data-tags="JiuJiangLuShan" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>九江庐山机场</li>
<li data-value="JZH" data-tags="JiuZhaiHuangLong" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>九寨黄龙机场</li>
<li data-group="K" class="mui-table-view-divider mui-group-list-group">K</li>
<li data-value="KHG" data-tags="KaShi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>喀什机场</li>
<li data-value="KRY" data-tags="KeLaMaYi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>克拉玛依机场</li>
<li data-value="KCA" data-tags="KuCheGuiZi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>库车龟兹机场</li>
<li data-value="KRL" data-tags="KuErLe" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>库尔勒机场</li>
<li data-value="KMG" data-tags="KunMingWuJiaBaGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>昆明巫家坝国际机场</li>
<li data-group="L" class="mui-table-view-divider mui-group-list-group">L</li>
<li data-value="LXA" data-tags="LaSaGongGa" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>拉萨贡嘎机场</li>
<li data-value="LHW" data-tags="LanZhouZhongChuan" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>兰州中川机场</li>
<li data-value="LJG" data-tags="LiJiangSanYi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>丽江三义机场</li>
<li data-value="HZH" data-tags="LiPing" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>黎平机场</li>
<li data-value="LYG" data-tags="LianYunGangBaiTaBu" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>连云港白塔埠机场</li>
<li data-value="LNJ" data-tags="LinCang" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>临沧机场</li>
<li data-value="LYI" data-tags="LinYi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>临沂机场</li>
<li data-value="LZY" data-tags="LinZhiMiLin" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>林芝米林机场</li>
<li data-value="LZH" data-tags="LiuZhouBaiLian" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>柳州白莲机场</li>
<li data-value="LCX" data-tags="LongYanGuanZhiShan" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>龙岩冠豸山机场</li>
<li data-value="LZO" data-tags="LuZhouLanTian" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>泸州蓝田机场</li>
<li data-value="LYA" data-tags="LuoYangBeiJiao" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>洛阳北郊机场</li>
<li data-group="M" class="mui-table-view-divider mui-group-list-group">M</li>
<li data-value="NZH" data-tags="ManZhouLiXiJiao" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>满洲里西郊机场</li>
<li data-value="MIG" data-tags="MianYangNanJiao" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>绵阳南郊机场</li>
<li data-value="OHE" data-tags="MoHeGuLian" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>漠河古莲机场</li>
<li data-value="MDG" data-tags="MuDanJiangHaiLang" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>牡丹江海浪机场</li>
<li data-group="N" class="mui-table-view-divider mui-group-list-group">N</li>
<li data-value="KHN" data-tags="NanChangChangBeiGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>南昌昌北国际机场</li>
<li data-value="NAO" data-tags="NanChongGaoPing" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>南充高坪机场</li>
<li data-value="NKG" data-tags="NanJingLuKouGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>南京禄口国际机场</li>
<li data-value="NNG" data-tags="NanNingWuXu" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>南宁吴圩机场</li>
<li data-value="NTG" data-tags="NanTongXingDong" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>南通兴东机场</li>
<li data-value="NNY" data-tags="NanYangJiangYing" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>南阳姜营机场</li>
<li data-value="NGB" data-tags="NingBoLiSheGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>宁波栎社国际机场</li>
<li data-group="P" class="mui-table-view-divider mui-group-list-group">P</li>
<li data-value="SYM" data-tags="PuErSiMao" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>普洱思茅机场</li>
<li data-group="Q" class="mui-table-view-divider mui-group-list-group">Q</li>
<li data-value="NDG" data-tags="QiQiHaErSanJiaZi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>齐齐哈尔三家子机场</li>
<li data-value="SHP" data-tags="QinHuangDaoShanHaiGuan" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>秦皇岛山海关机场</li>
<li data-value="TAO" data-tags="QingDaoLiuTingGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>青岛流亭国际机场</li>
<li data-value="JUZ" data-tags="QuZhou" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>衢州机场</li>
<li data-value="JJN" data-tags="QuanZhouJinJiang" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>泉州晋江机场</li>
<li data-group="R" class="mui-table-view-divider mui-group-list-group">R</li>
<li data-value="RKZ" data-tags="RiKaZeHePing" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>日喀则和平机场</li>
<li data-group="S" class="mui-table-view-divider mui-group-list-group">S</li>
<li data-value="SYX" data-tags="SanYaFengHuangGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>三亚凤凰国际机场</li>
<li data-value="SWA" data-tags="ShanTouWaiSha" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>汕头外砂机场</li>
<li data-value="SHA" data-tags="ShangHaiHongQiaoGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>上海虹桥国际机场</li>
<li data-value="PVG" data-tags="ShangHaiPuDongGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>上海浦东国际机场</li>
<li data-value="SZX" data-tags="ShenChouBaoAnGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>深圳宝安国际机场</li>
<li data-value="SHE" data-tags="ShenYangTaoXianGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>沈阳桃仙国际机场</li>
<li data-value="SJW" data-tags="ShiJiaZhuangZhengDingGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>石家庄正定国际机场</li>
<li data-value="WUX" data-tags="SuNanShuoFangGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>苏南硕放国际机场</li>
<li data-group="T" class="mui-table-view-divider mui-group-list-group">T</li>
<li data-value="TCG" data-tags="TaCheng" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>塔城机场</li>
<li data-value="TYN" data-tags="TaiYuanWuSuGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>太原武宿国际机场</li>
<li data-value="HYN" data-tags="TaiZhouLuQiao-HuangYanJiChang" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>台州路桥机场 (黄岩机场)</li>
<li data-value="TVS" data-tags="TangShanSanNvHe" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>唐山三女河机场</li>
<li data-value="TCZ" data-tags="TengChongTuoFeng" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>腾冲驼峰机场</li>
<li data-value="TSN" data-tags="TianJinBinHaiGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>天津滨海国际机场</li>
<li data-value="TGO" data-tags="TongLiao" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>通辽机场</li>
<li data-value="TEN" data-tags="TongRenFengHuang" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>铜仁凤凰机场</li>
<li data-group="W" class="mui-table-view-divider mui-group-list-group">W</li>
<li data-value="WXN" data-tags="WanZhouWuQiao" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>万州五桥机场</li>
<li data-value="WEF" data-tags="WeiFang" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>潍坊机场</li>
<li data-value="WEH" data-tags="WeiHaiDaShuiBo" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>威海大水泊机场</li>
<li data-value="WNH" data-tags="WenShanPuZheHei" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>文山普者黑机场</li>
<li data-value="WNZ" data-tags="WenZhouYongQiangGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>温州永强国际机场</li>
<li data-value="WUA" data-tags="WuHai" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>乌海机场</li>
<li data-value="WUH" data-tags="WuHanTianHeGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>武汉天河国际机场</li>
<li data-value="HLH" data-tags="WuLanHaoTe" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>乌兰浩特机场</li>
<li data-value="URC" data-tags="WuLuMuQiDiWoBaoGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>乌鲁木齐地窝堡国际机场</li>
<li data-value="WUS" data-tags="WuYiShan" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>武夷山机场</li>
<li data-value="WUZ" data-tags="WuZhouChangZhouDao" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>梧州长洲岛机场</li>
<li data-group="X" class="mui-table-view-divider mui-group-list-group">X</li>
<li data-value="XIY" data-tags="XiAnXianYangGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>西安咸阳国际机场</li>
<li data-value="XIC" data-tags="XiChangQingShan" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>西昌青山机场</li>
<li data-value="XIL" data-tags="XiLinHaoTe" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>锡林浩特机场</li>
<li data-value="XNN" data-tags="XiNingCaoJiaBao" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>西宁曹家堡机场</li>
<li data-value="JHG" data-tags="XiShuangBanNaGaSa" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>西双版纳嘎洒机场</li>
<li data-value="XMN" data-tags="XiaMenGaoQiGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>厦门高崎国际机场</li>
<li data-value="HKG" data-tags="XiangGangGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>香港国际机场</li>
<li data-value="XFN" data-tags="XiangYangLiuJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>襄阳刘集机场</li>
<li data-value="ACX" data-tags="XingYi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>兴义机场</li>
<li data-value="XUZ" data-tags="XuZhouGuanYin" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>徐州观音机场</li>
<li data-group="Y" class="mui-table-view-divider mui-group-list-group">Y</li>
<li data-value="ENY" data-tags="YanAnErShiLiBao" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>延安二十里堡机场</li>
<li data-value="YNZ" data-tags="YanCheng" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>盐城机场</li>
<li data-value="YNJ" data-tags="YanJiChaoYangChuan" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>延吉朝阳川机场</li>
<li data-value="YNT" data-tags="YanTaiLaiShanGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>烟台莱山国际机场</li>
<li data-value="YBP" data-tags="YiBinCaiBa" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>宜宾菜坝机场</li>
<li data-value="YIH" data-tags="YiChangSanXia" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>宜昌三峡机场</li>
<li data-value="LDS" data-tags="YiChunLinDu" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>伊春林都机场</li>
<li data-value="YIN" data-tags="YiNing" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>伊宁机场</li>
<li data-value="YIW" data-tags="YiWu" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>义乌机场</li>
<li data-value="INC" data-tags="YinChuanHeDong" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>银川河东机场</li>
<li data-value="LLF" data-tags="YongZhouLingLing" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>永州零陵机场</li>
<li data-value="UYN" data-tags="YuLinYuYang" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>榆林榆阳机场</li>
<li data-value="YUS" data-tags="YuShuBaTang" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>玉树巴塘机场</li>
<li data-value="YCU" data-tags="YunChengZhangXiao" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>运城张孝机场</li>
<li data-group="Z" class="mui-table-view-divider mui-group-list-group">Z</li>
<li data-value="ZHA" data-tags="ZhanJiang" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>湛江机场</li>
<li data-value="ZAT" data-tags="ZhaoTong" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>昭通机场</li>
<li data-value="CGO" data-tags="ZhengZhouXinZhengGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>郑州新郑国际机场</li>
<li data-value="HJJ" data-tags="ZhiJiang" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>芷江机场</li>
<li data-value="CKG" data-tags="ZhongQingJiangBeiGuoJi" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>重庆江北国际机场</li>
<li data-value="ZHY" data-tags="ZhongWeiXiangShan" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>中卫香山机场</li>
<li data-value="HSN" data-tags="ZhouShanZhuJiaJian" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>舟山朱家尖机场</li>
<li data-value="ZUH" data-tags="ZhuHaiSanZao" class="mui-table-view-cell mui-group-list-item mui-checkbox mui-left"><input type="checkbox"/>珠海三灶机场</li>
<li data-group="A" class="mui-table-view-divider mui-indexed-list-group">A</li>
<li data-value="AKU" data-tags="AKeSu" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>阿克苏机场</li>
<li data-value="BPL" data-tags="ALaShanKou" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>阿拉山口机场</li>
<li data-value="AAT" data-tags="ALeTai" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>阿勒泰机场</li>
<li data-value="NGQ" data-tags="ALiKunSha" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>阿里昆莎机场</li>
<li data-value="AQG" data-tags="AnQingTianZhuShan" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>安庆天柱山机场</li>
<li data-value="MFM" data-tags="AoMenGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>澳门国际机场</li>
<li data-group="B" class="mui-table-view-divider mui-indexed-list-group">B</li>
<li data-value="BSD" data-tags="BaoShan" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>保山机场</li>
<li data-value="BAV" data-tags="BaoTou" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>包头机场</li>
<li data-value="BHY" data-tags="BeiHaiFuCheng" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>北海福成机场</li>
<li data-value="NAY" data-tags="BeiJingNanYuan" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>北京南苑机场</li>
<li data-value="PEK" data-tags="BeiJingShouDuGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>北京首都国际机场</li>
<li data-group="C" class="mui-table-view-divider mui-indexed-list-group">C</li>
<li data-value="NBS" data-tags="ChangBaiShan" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>长白山机场</li>
<li data-value="CGQ" data-tags="ChangChunLongJiaGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>长春龙嘉国际机场</li>
<li data-value="CGD" data-tags="ChangDeTaoHuaYuan" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>常德桃花源机场</li>
<li data-value="BPX" data-tags="ChangDuBangDa" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>昌都邦达机场</li>
<li data-value="CSX" data-tags="ChangShaHuangHuaGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>长沙黄花国际机场</li>
<li data-value="CIH" data-tags="ChangZhiWangCun" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>长治王村机场</li>
<li data-value="CZX" data-tags="ChangZhouBenNiu" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>常州奔牛机场</li>
<li data-value="CTU" data-tags="ChengDuShuangLiuGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>成都双流国际机场</li>
<li data-value="CIF" data-tags="ChiFeng" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>赤峰机场</li>
<li data-group="D" class="mui-table-view-divider mui-indexed-list-group">D</li>
<li data-value="DLU" data-tags="DaLi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>大理机场</li>
<li data-value="DLC" data-tags="DaLianZhouShuiZiGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>大连周水子国际机场</li>
<li data-value="DQA" data-tags="DaQingSaErTu" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>大庆萨尔图机场</li>
<li data-value="DAT" data-tags="DaTongDongWangZhuang" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>大同东王庄机场</li>
<li data-value="DAX" data-tags="DaZhouHeShi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>达州河市机场</li>
<li data-value="DDG" data-tags="DanDongLangTou" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>丹东浪头机场</li>
<li data-value="LUM" data-tags="DeHongMangShi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>德宏芒市机场</li>
<li data-value="DIG" data-tags="DiQingXiangGeLiLa" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>迪庆香格里拉机场</li>
<li data-value="DOY" data-tags="DongYing" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>东营机场</li>
<li data-value="DNH" data-tags="DunHuang" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>敦煌机场</li>
<li data-group="E" class="mui-table-view-divider mui-indexed-list-group">E</li>
<li data-value="DSN" data-tags="EErDuoSi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>鄂尔多斯机场</li>
<li data-value="ENH" data-tags="EnShiXuJiaPing" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>恩施许家坪机场</li>
<li data-value="ERL" data-tags="ErLianHaoTeSaiWuSuGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>二连浩特赛乌苏国际机场</li>
<li data-group="F" class="mui-table-view-divider mui-indexed-list-group">F</li>
<li data-value="FUG" data-tags="FuYangXiGuan" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>阜阳西关机场</li>
<li data-value="FOC" data-tags="FuZhouChangLeGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>福州长乐国际机场</li>
<li data-group="G" class="mui-table-view-divider mui-indexed-list-group">G</li>
<li data-value="KOW" data-tags="GanZhouHuangJin" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>赣州黄金机场</li>
<li data-value="GOQ" data-tags="GeErMu" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>格尔木机场</li>
<li data-value="GYU" data-tags="GuYuanLiuPanShan" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>固原六盘山机场</li>
<li data-value="GYS" data-tags="GuangYuanPanLong" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>广元盘龙机场</li>
<li data-value="CAN" data-tags="GuangZhouBaiYunGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>广州白云国际机场</li>
<li data-value="KWL" data-tags="GuiLinLiangJiangGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>桂林两江国际机场</li>
<li data-value="KWE" data-tags="GuiYangLongDongBaoGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>贵阳龙洞堡国际机场</li>
<li data-group="H" class="mui-table-view-divider mui-indexed-list-group">H</li>
<li data-value="HRB" data-tags="HaErBinTaiPingGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>哈尔滨太平国际机场</li>
<li data-value="HMI" data-tags="HaMi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>哈密机场</li>
<li data-value="HAK" data-tags="HaiKouMeiLanGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>海口美兰国际机场</li>
<li data-value="HLD" data-tags="HaiLaErDongShanGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>海拉尔东山国际机场</li>
<li data-value="HDG" data-tags="HanDan" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>邯郸机场</li>
<li data-value="HZG" data-tags="HanZhong" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>汉中机场</li>
<li data-value="HGH" data-tags="HangZhouXiaoShanGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>杭州萧山国际机场</li>
<li data-value="HFE" data-tags="HeFeiLuoGangGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>合肥骆岗国际机场</li>
<li data-value="HTN" data-tags="HeTian" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>和田机场</li>
<li data-value="HEK" data-tags="HeiHe" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>黑河机场</li>
<li data-value="HET" data-tags="HuHeHaoTeBaiTaGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>呼和浩特白塔国际机场</li>
<li data-value="HIA" data-tags="HuaiAnLianShui" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>淮安涟水机场</li>
<li data-value="TXN" data-tags="HuangShanTunXiGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>黄山屯溪国际机场</li>
<li data-group="J" class="mui-table-view-divider mui-indexed-list-group">J</li>
<li data-value="TNA" data-tags="JiNanYaoQiangGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>济南遥墙国际机场</li>
<li data-value="JNG" data-tags="JiNingQuFu" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>济宁曲阜机场</li>
<li data-value="JXA" data-tags="JiXiXingKaiHu" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>鸡西兴凯湖机场</li>
<li data-value="JMU" data-tags="JiaMuSiDongJiao" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>佳木斯东郊机场</li>
<li data-value="JGN" data-tags="JiaYuGuan" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>嘉峪关机场</li>
<li data-value="JNZ" data-tags="JinZhouXiaoLingZi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>锦州小岭子机场</li>
<li data-value="JDZ" data-tags="JingDeZhen" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>景德镇机场</li>
<li data-value="JGS" data-tags="JingGangShan" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>井冈山机场</li>
<li data-value="JIU" data-tags="JiuJiangLuShan" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>九江庐山机场</li>
<li data-value="JZH" data-tags="JiuZhaiHuangLong" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>九寨黄龙机场</li>
<li data-group="K" class="mui-table-view-divider mui-indexed-list-group">K</li>
<li data-value="KHG" data-tags="KaShi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>喀什机场</li>
<li data-value="KRY" data-tags="KeLaMaYi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>克拉玛依机场</li>
<li data-value="KCA" data-tags="KuCheGuiZi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>库车龟兹机场</li>
<li data-value="KRL" data-tags="KuErLe" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>库尔勒机场</li>
<li data-value="KMG" data-tags="KunMingWuJiaBaGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>昆明巫家坝国际机场</li>
<li data-group="L" class="mui-table-view-divider mui-indexed-list-group">L</li>
<li data-value="LXA" data-tags="LaSaGongGa" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>拉萨贡嘎机场</li>
<li data-value="LHW" data-tags="LanZhouZhongChuan" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>兰州中川机场</li>
<li data-value="LJG" data-tags="LiJiangSanYi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>丽江三义机场</li>
<li data-value="HZH" data-tags="LiPing" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>黎平机场</li>
<li data-value="LYG" data-tags="LianYunGangBaiTaBu" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>连云港白塔埠机场</li>
<li data-value="LNJ" data-tags="LinCang" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>临沧机场</li>
<li data-value="LYI" data-tags="LinYi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>临沂机场</li>
<li data-value="LZY" data-tags="LinZhiMiLin" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>林芝米林机场</li>
<li data-value="LZH" data-tags="LiuZhouBaiLian" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>柳州白莲机场</li>
<li data-value="LCX" data-tags="LongYanGuanZhiShan" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>龙岩冠豸山机场</li>
<li data-value="LZO" data-tags="LuZhouLanTian" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>泸州蓝田机场</li>
<li data-value="LYA" data-tags="LuoYangBeiJiao" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>洛阳北郊机场</li>
<li data-group="M" class="mui-table-view-divider mui-indexed-list-group">M</li>
<li data-value="NZH" data-tags="ManZhouLiXiJiao" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>满洲里西郊机场</li>
<li data-value="MIG" data-tags="MianYangNanJiao" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>绵阳南郊机场</li>
<li data-value="OHE" data-tags="MoHeGuLian" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>漠河古莲机场</li>
<li data-value="MDG" data-tags="MuDanJiangHaiLang" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>牡丹江海浪机场</li>
<li data-group="N" class="mui-table-view-divider mui-indexed-list-group">N</li>
<li data-value="KHN" data-tags="NanChangChangBeiGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>南昌昌北国际机场</li>
<li data-value="NAO" data-tags="NanChongGaoPing" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>南充高坪机场</li>
<li data-value="NKG" data-tags="NanJingLuKouGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>南京禄口国际机场</li>
<li data-value="NNG" data-tags="NanNingWuXu" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>南宁吴圩机场</li>
<li data-value="NTG" data-tags="NanTongXingDong" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>南通兴东机场</li>
<li data-value="NNY" data-tags="NanYangJiangYing" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>南阳姜营机场</li>
<li data-value="NGB" data-tags="NingBoLiSheGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>宁波栎社国际机场</li>
<li data-group="P" class="mui-table-view-divider mui-indexed-list-group">P</li>
<li data-value="SYM" data-tags="PuErSiMao" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>普洱思茅机场</li>
<li data-group="Q" class="mui-table-view-divider mui-indexed-list-group">Q</li>
<li data-value="NDG" data-tags="QiQiHaErSanJiaZi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>齐齐哈尔三家子机场</li>
<li data-value="SHP" data-tags="QinHuangDaoShanHaiGuan" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>秦皇岛山海关机场</li>
<li data-value="TAO" data-tags="QingDaoLiuTingGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>青岛流亭国际机场</li>
<li data-value="JUZ" data-tags="QuZhou" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>衢州机场</li>
<li data-value="JJN" data-tags="QuanZhouJinJiang" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>泉州晋江机场</li>
<li data-group="R" class="mui-table-view-divider mui-indexed-list-group">R</li>
<li data-value="RKZ" data-tags="RiKaZeHePing" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>日喀则和平机场</li>
<li data-group="S" class="mui-table-view-divider mui-indexed-list-group">S</li>
<li data-value="SYX" data-tags="SanYaFengHuangGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>三亚凤凰国际机场</li>
<li data-value="SWA" data-tags="ShanTouWaiSha" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>汕头外砂机场</li>
<li data-value="SHA" data-tags="ShangHaiHongQiaoGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>上海虹桥国际机场</li>
<li data-value="PVG" data-tags="ShangHaiPuDongGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>上海浦东国际机场</li>
<li data-value="SZX" data-tags="ShenChouBaoAnGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>深圳宝安国际机场</li>
<li data-value="SHE" data-tags="ShenYangTaoXianGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>沈阳桃仙国际机场</li>
<li data-value="SJW" data-tags="ShiJiaZhuangZhengDingGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>石家庄正定国际机场</li>
<li data-value="WUX" data-tags="SuNanShuoFangGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>苏南硕放国际机场</li>
<li data-group="T" class="mui-table-view-divider mui-indexed-list-group">T</li>
<li data-value="TCG" data-tags="TaCheng" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>塔城机场</li>
<li data-value="TYN" data-tags="TaiYuanWuSuGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>太原武宿国际机场</li>
<li data-value="HYN" data-tags="TaiZhouLuQiao-HuangYanJiChang" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>台州路桥机场 (黄岩机场)</li>
<li data-value="TVS" data-tags="TangShanSanNvHe" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>唐山三女河机场</li>
<li data-value="TCZ" data-tags="TengChongTuoFeng" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>腾冲驼峰机场</li>
<li data-value="TSN" data-tags="TianJinBinHaiGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>天津滨海国际机场</li>
<li data-value="TGO" data-tags="TongLiao" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>通辽机场</li>
<li data-value="TEN" data-tags="TongRenFengHuang" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>铜仁凤凰机场</li>
<li data-group="W" class="mui-table-view-divider mui-indexed-list-group">W</li>
<li data-value="WXN" data-tags="WanZhouWuQiao" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>万州五桥机场</li>
<li data-value="WEF" data-tags="WeiFang" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>潍坊机场</li>
<li data-value="WEH" data-tags="WeiHaiDaShuiBo" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>威海大水泊机场</li>
<li data-value="WNH" data-tags="WenShanPuZheHei" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>文山普者黑机场</li>
<li data-value="WNZ" data-tags="WenZhouYongQiangGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>温州永强国际机场</li>
<li data-value="WUA" data-tags="WuHai" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>乌海机场</li>
<li data-value="WUH" data-tags="WuHanTianHeGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>武汉天河国际机场</li>
<li data-value="HLH" data-tags="WuLanHaoTe" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>乌兰浩特机场</li>
<li data-value="URC" data-tags="WuLuMuQiDiWoBaoGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>乌鲁木齐地窝堡国际机场</li>
<li data-value="WUS" data-tags="WuYiShan" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>武夷山机场</li>
<li data-value="WUZ" data-tags="WuZhouChangZhouDao" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>梧州长洲岛机场</li>
<li data-group="X" class="mui-table-view-divider mui-indexed-list-group">X</li>
<li data-value="XIY" data-tags="XiAnXianYangGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>西安咸阳国际机场</li>
<li data-value="XIC" data-tags="XiChangQingShan" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>西昌青山机场</li>
<li data-value="XIL" data-tags="XiLinHaoTe" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>锡林浩特机场</li>
<li data-value="XNN" data-tags="XiNingCaoJiaBao" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>西宁曹家堡机场</li>
<li data-value="JHG" data-tags="XiShuangBanNaGaSa" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>西双版纳嘎洒机场</li>
<li data-value="XMN" data-tags="XiaMenGaoQiGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>厦门高崎国际机场</li>
<li data-value="HKG" data-tags="XiangGangGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>香港国际机场</li>
<li data-value="XFN" data-tags="XiangYangLiuJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>襄阳刘集机场</li>
<li data-value="ACX" data-tags="XingYi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>兴义机场</li>
<li data-value="XUZ" data-tags="XuZhouGuanYin" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>徐州观音机场</li>
<li data-group="Y" class="mui-table-view-divider mui-indexed-list-group">Y</li>
<li data-value="ENY" data-tags="YanAnErShiLiBao" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>延安二十里堡机场</li>
<li data-value="YNZ" data-tags="YanCheng" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>盐城机场</li>
<li data-value="YNJ" data-tags="YanJiChaoYangChuan" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>延吉朝阳川机场</li>
<li data-value="YNT" data-tags="YanTaiLaiShanGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>烟台莱山国际机场</li>
<li data-value="YBP" data-tags="YiBinCaiBa" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>宜宾菜坝机场</li>
<li data-value="YIH" data-tags="YiChangSanXia" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>宜昌三峡机场</li>
<li data-value="LDS" data-tags="YiChunLinDu" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>伊春林都机场</li>
<li data-value="YIN" data-tags="YiNing" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>伊宁机场</li>
<li data-value="YIW" data-tags="YiWu" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>义乌机场</li>
<li data-value="INC" data-tags="YinChuanHeDong" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>银川河东机场</li>
<li data-value="LLF" data-tags="YongZhouLingLing" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>永州零陵机场</li>
<li data-value="UYN" data-tags="YuLinYuYang" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>榆林榆阳机场</li>
<li data-value="YUS" data-tags="YuShuBaTang" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>玉树巴塘机场</li>
<li data-value="YCU" data-tags="YunChengZhangXiao" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>运城张孝机场</li>
<li data-group="Z" class="mui-table-view-divider mui-indexed-list-group">Z</li>
<li data-value="ZHA" data-tags="ZhanJiang" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>湛江机场</li>
<li data-value="ZAT" data-tags="ZhaoTong" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>昭通机场</li>
<li data-value="CGO" data-tags="ZhengZhouXinZhengGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>郑州新郑国际机场</li>
<li data-value="HJJ" data-tags="ZhiJiang" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>芷江机场</li>
<li data-value="CKG" data-tags="ZhongQingJiangBeiGuoJi" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>重庆江北国际机场</li>
<li data-value="ZHY" data-tags="ZhongWeiXiangShan" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>中卫香山机场</li>
<li data-value="HSN" data-tags="ZhouShanZhuJiaJian" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>舟山朱家尖机场</li>
<li data-value="ZUH" data-tags="ZhuHaiSanZao" class="mui-table-view-cell mui-indexed-list-item mui-checkbox mui-left"><input type="checkbox"/>珠海三灶机场</li>
</ul>
</div>
</div>
......
......@@ -26,11 +26,11 @@
<h1 class="mui-title">indexed list(索引列表)</h1>
</header>
<div class="mui-content">
<div id='list' class="mui-group-list">
<div class="mui-group-list-search mui-input-row mui-search">
<input type="search" class="mui-input-clear mui-group-list-search-input" placeholder="搜索机场">
<div id='list' class="mui-indexed-list">
<div class="mui-indexed-list-search mui-input-row mui-search">
<input type="search" class="mui-input-clear mui-indexed-list-search-input" placeholder="搜索机场">
</div>
<div class="mui-group-list-bar">
<div class="mui-indexed-list-bar">
<a>A</a>
<a>B</a>
<a>C</a>
......@@ -58,191 +58,191 @@
<a>Y</a>
<a>Z</a>
</div>
<div class="mui-group-list-alert"></div>
<div class="mui-group-list-inner">
<div class="mui-group-list-empty-alert">没有数据</div>
<div class="mui-indexed-list-alert"></div>
<div class="mui-indexed-list-inner">
<div class="mui-indexed-list-empty-alert">没有数据</div>
<ul class="mui-table-view">
<li data-group="A" class="mui-table-view-divider mui-group-list-group">A</li>
<li data-value="AKU" data-tags="AKeSu" class="mui-table-view-cell mui-group-list-item">阿克苏机场</li>
<li data-value="BPL" data-tags="ALaShanKou" class="mui-table-view-cell mui-group-list-item">阿拉山口机场</li>
<li data-value="AAT" data-tags="ALeTai" class="mui-table-view-cell mui-group-list-item">阿勒泰机场</li>
<li data-value="NGQ" data-tags="ALiKunSha" class="mui-table-view-cell mui-group-list-item">阿里昆莎机场</li>
<li data-value="AQG" data-tags="AnQingTianZhuShan" class="mui-table-view-cell mui-group-list-item">安庆天柱山机场</li>
<li data-value="MFM" data-tags="AoMenGuoJi" class="mui-table-view-cell mui-group-list-item">澳门国际机场</li>
<li data-group="B" class="mui-table-view-divider mui-group-list-group">B</li>
<li data-value="BSD" data-tags="BaoShan" class="mui-table-view-cell mui-group-list-item">保山机场</li>
<li data-value="BAV" data-tags="BaoTou" class="mui-table-view-cell mui-group-list-item">包头机场</li>
<li data-value="BHY" data-tags="BeiHaiFuCheng" class="mui-table-view-cell mui-group-list-item">北海福成机场</li>
<li data-value="NAY" data-tags="BeiJingNanYuan" class="mui-table-view-cell mui-group-list-item">北京南苑机场</li>
<li data-value="PEK" data-tags="BeiJingShouDuGuoJi" class="mui-table-view-cell mui-group-list-item">北京首都国际机场</li>
<li data-group="C" class="mui-table-view-divider mui-group-list-group">C</li>
<li data-value="NBS" data-tags="ChangBaiShan" class="mui-table-view-cell mui-group-list-item">长白山机场</li>
<li data-value="CGQ" data-tags="ChangChunLongJiaGuoJi" class="mui-table-view-cell mui-group-list-item">长春龙嘉国际机场</li>
<li data-value="CGD" data-tags="ChangDeTaoHuaYuan" class="mui-table-view-cell mui-group-list-item">常德桃花源机场</li>
<li data-value="BPX" data-tags="ChangDuBangDa" class="mui-table-view-cell mui-group-list-item">昌都邦达机场</li>
<li data-value="CSX" data-tags="ChangShaHuangHuaGuoJi" class="mui-table-view-cell mui-group-list-item">长沙黄花国际机场</li>
<li data-value="CIH" data-tags="ChangZhiWangCun" class="mui-table-view-cell mui-group-list-item">长治王村机场</li>
<li data-value="CZX" data-tags="ChangZhouBenNiu" class="mui-table-view-cell mui-group-list-item">常州奔牛机场</li>
<li data-value="CTU" data-tags="ChengDuShuangLiuGuoJi" class="mui-table-view-cell mui-group-list-item">成都双流国际机场</li>
<li data-value="CIF" data-tags="ChiFeng" class="mui-table-view-cell mui-group-list-item">赤峰机场</li>
<li data-group="D" class="mui-table-view-divider mui-group-list-group">D</li>
<li data-value="DLU" data-tags="DaLi" class="mui-table-view-cell mui-group-list-item">大理机场</li>
<li data-value="DLC" data-tags="DaLianZhouShuiZiGuoJi" class="mui-table-view-cell mui-group-list-item">大连周水子国际机场</li>
<li data-value="DQA" data-tags="DaQingSaErTu" class="mui-table-view-cell mui-group-list-item">大庆萨尔图机场</li>
<li data-value="DAT" data-tags="DaTongDongWangZhuang" class="mui-table-view-cell mui-group-list-item">大同东王庄机场</li>
<li data-value="DAX" data-tags="DaZhouHeShi" class="mui-table-view-cell mui-group-list-item">达州河市机场</li>
<li data-value="DDG" data-tags="DanDongLangTou" class="mui-table-view-cell mui-group-list-item">丹东浪头机场</li>
<li data-value="LUM" data-tags="DeHongMangShi" class="mui-table-view-cell mui-group-list-item">德宏芒市机场</li>
<li data-value="DIG" data-tags="DiQingXiangGeLiLa" class="mui-table-view-cell mui-group-list-item">迪庆香格里拉机场</li>
<li data-value="DOY" data-tags="DongYing" class="mui-table-view-cell mui-group-list-item">东营机场</li>
<li data-value="DNH" data-tags="DunHuang" class="mui-table-view-cell mui-group-list-item">敦煌机场</li>
<li data-group="E" class="mui-table-view-divider mui-group-list-group">E</li>
<li data-value="DSN" data-tags="EErDuoSi" class="mui-table-view-cell mui-group-list-item">鄂尔多斯机场</li>
<li data-value="ENH" data-tags="EnShiXuJiaPing" class="mui-table-view-cell mui-group-list-item">恩施许家坪机场</li>
<li data-value="ERL" data-tags="ErLianHaoTeSaiWuSuGuoJi" class="mui-table-view-cell mui-group-list-item">二连浩特赛乌苏国际机场</li>
<li data-group="F" class="mui-table-view-divider mui-group-list-group">F</li>
<li data-value="FUG" data-tags="FuYangXiGuan" class="mui-table-view-cell mui-group-list-item">阜阳西关机场</li>
<li data-value="FOC" data-tags="FuZhouChangLeGuoJi" class="mui-table-view-cell mui-group-list-item">福州长乐国际机场</li>
<li data-group="G" class="mui-table-view-divider mui-group-list-group">G</li>
<li data-value="KOW" data-tags="GanZhouHuangJin" class="mui-table-view-cell mui-group-list-item">赣州黄金机场</li>
<li data-value="GOQ" data-tags="GeErMu" class="mui-table-view-cell mui-group-list-item">格尔木机场</li>
<li data-value="GYU" data-tags="GuYuanLiuPanShan" class="mui-table-view-cell mui-group-list-item">固原六盘山机场</li>
<li data-value="GYS" data-tags="GuangYuanPanLong" class="mui-table-view-cell mui-group-list-item">广元盘龙机场</li>
<li data-value="CAN" data-tags="GuangZhouBaiYunGuoJi" class="mui-table-view-cell mui-group-list-item">广州白云国际机场</li>
<li data-value="KWL" data-tags="GuiLinLiangJiangGuoJi" class="mui-table-view-cell mui-group-list-item">桂林两江国际机场</li>
<li data-value="KWE" data-tags="GuiYangLongDongBaoGuoJi" class="mui-table-view-cell mui-group-list-item">贵阳龙洞堡国际机场</li>
<li data-group="H" class="mui-table-view-divider mui-group-list-group">H</li>
<li data-value="HRB" data-tags="HaErBinTaiPingGuoJi" class="mui-table-view-cell mui-group-list-item">哈尔滨太平国际机场</li>
<li data-value="HMI" data-tags="HaMi" class="mui-table-view-cell mui-group-list-item">哈密机场</li>
<li data-value="HAK" data-tags="HaiKouMeiLanGuoJi" class="mui-table-view-cell mui-group-list-item">海口美兰国际机场</li>
<li data-value="HLD" data-tags="HaiLaErDongShanGuoJi" class="mui-table-view-cell mui-group-list-item">海拉尔东山国际机场</li>
<li data-value="HDG" data-tags="HanDan" class="mui-table-view-cell mui-group-list-item">邯郸机场</li>
<li data-value="HZG" data-tags="HanZhong" class="mui-table-view-cell mui-group-list-item">汉中机场</li>
<li data-value="HGH" data-tags="HangZhouXiaoShanGuoJi" class="mui-table-view-cell mui-group-list-item">杭州萧山国际机场</li>
<li data-value="HFE" data-tags="HeFeiLuoGangGuoJi" class="mui-table-view-cell mui-group-list-item">合肥骆岗国际机场</li>
<li data-value="HTN" data-tags="HeTian" class="mui-table-view-cell mui-group-list-item">和田机场</li>
<li data-value="HEK" data-tags="HeiHe" class="mui-table-view-cell mui-group-list-item">黑河机场</li>
<li data-value="HET" data-tags="HuHeHaoTeBaiTaGuoJi" class="mui-table-view-cell mui-group-list-item">呼和浩特白塔国际机场</li>
<li data-value="HIA" data-tags="HuaiAnLianShui" class="mui-table-view-cell mui-group-list-item">淮安涟水机场</li>
<li data-value="TXN" data-tags="HuangShanTunXiGuoJi" class="mui-table-view-cell mui-group-list-item">黄山屯溪国际机场</li>
<li data-group="J" class="mui-table-view-divider mui-group-list-group">J</li>
<li data-value="TNA" data-tags="JiNanYaoQiangGuoJi" class="mui-table-view-cell mui-group-list-item">济南遥墙国际机场</li>
<li data-value="JNG" data-tags="JiNingQuFu" class="mui-table-view-cell mui-group-list-item">济宁曲阜机场</li>
<li data-value="JXA" data-tags="JiXiXingKaiHu" class="mui-table-view-cell mui-group-list-item">鸡西兴凯湖机场</li>
<li data-value="JMU" data-tags="JiaMuSiDongJiao" class="mui-table-view-cell mui-group-list-item">佳木斯东郊机场</li>
<li data-value="JGN" data-tags="JiaYuGuan" class="mui-table-view-cell mui-group-list-item">嘉峪关机场</li>
<li data-value="JNZ" data-tags="JinZhouXiaoLingZi" class="mui-table-view-cell mui-group-list-item">锦州小岭子机场</li>
<li data-value="JDZ" data-tags="JingDeZhen" class="mui-table-view-cell mui-group-list-item">景德镇机场</li>
<li data-value="JGS" data-tags="JingGangShan" class="mui-table-view-cell mui-group-list-item">井冈山机场</li>
<li data-value="JIU" data-tags="JiuJiangLuShan" class="mui-table-view-cell mui-group-list-item">九江庐山机场</li>
<li data-value="JZH" data-tags="JiuZhaiHuangLong" class="mui-table-view-cell mui-group-list-item">九寨黄龙机场</li>
<li data-group="K" class="mui-table-view-divider mui-group-list-group">K</li>
<li data-value="KHG" data-tags="KaShi" class="mui-table-view-cell mui-group-list-item">喀什机场</li>
<li data-value="KRY" data-tags="KeLaMaYi" class="mui-table-view-cell mui-group-list-item">克拉玛依机场</li>
<li data-value="KCA" data-tags="KuCheGuiZi" class="mui-table-view-cell mui-group-list-item">库车龟兹机场</li>
<li data-value="KRL" data-tags="KuErLe" class="mui-table-view-cell mui-group-list-item">库尔勒机场</li>
<li data-value="KMG" data-tags="KunMingWuJiaBaGuoJi" class="mui-table-view-cell mui-group-list-item">昆明巫家坝国际机场</li>
<li data-group="L" class="mui-table-view-divider mui-group-list-group">L</li>
<li data-value="LXA" data-tags="LaSaGongGa" class="mui-table-view-cell mui-group-list-item">拉萨贡嘎机场</li>
<li data-value="LHW" data-tags="LanZhouZhongChuan" class="mui-table-view-cell mui-group-list-item">兰州中川机场</li>
<li data-value="LJG" data-tags="LiJiangSanYi" class="mui-table-view-cell mui-group-list-item">丽江三义机场</li>
<li data-value="HZH" data-tags="LiPing" class="mui-table-view-cell mui-group-list-item">黎平机场</li>
<li data-value="LYG" data-tags="LianYunGangBaiTaBu" class="mui-table-view-cell mui-group-list-item">连云港白塔埠机场</li>
<li data-value="LNJ" data-tags="LinCang" class="mui-table-view-cell mui-group-list-item">临沧机场</li>
<li data-value="LYI" data-tags="LinYi" class="mui-table-view-cell mui-group-list-item">临沂机场</li>
<li data-value="LZY" data-tags="LinZhiMiLin" class="mui-table-view-cell mui-group-list-item">林芝米林机场</li>
<li data-value="LZH" data-tags="LiuZhouBaiLian" class="mui-table-view-cell mui-group-list-item">柳州白莲机场</li>
<li data-value="LCX" data-tags="LongYanGuanZhiShan" class="mui-table-view-cell mui-group-list-item">龙岩冠豸山机场</li>
<li data-value="LZO" data-tags="LuZhouLanTian" class="mui-table-view-cell mui-group-list-item">泸州蓝田机场</li>
<li data-value="LYA" data-tags="LuoYangBeiJiao" class="mui-table-view-cell mui-group-list-item">洛阳北郊机场</li>
<li data-group="M" class="mui-table-view-divider mui-group-list-group">M</li>
<li data-value="NZH" data-tags="ManZhouLiXiJiao" class="mui-table-view-cell mui-group-list-item">满洲里西郊机场</li>
<li data-value="MIG" data-tags="MianYangNanJiao" class="mui-table-view-cell mui-group-list-item">绵阳南郊机场</li>
<li data-value="OHE" data-tags="MoHeGuLian" class="mui-table-view-cell mui-group-list-item">漠河古莲机场</li>
<li data-value="MDG" data-tags="MuDanJiangHaiLang" class="mui-table-view-cell mui-group-list-item">牡丹江海浪机场</li>
<li data-group="N" class="mui-table-view-divider mui-group-list-group">N</li>
<li data-value="KHN" data-tags="NanChangChangBeiGuoJi" class="mui-table-view-cell mui-group-list-item">南昌昌北国际机场</li>
<li data-value="NAO" data-tags="NanChongGaoPing" class="mui-table-view-cell mui-group-list-item">南充高坪机场</li>
<li data-value="NKG" data-tags="NanJingLuKouGuoJi" class="mui-table-view-cell mui-group-list-item">南京禄口国际机场</li>
<li data-value="NNG" data-tags="NanNingWuXu" class="mui-table-view-cell mui-group-list-item">南宁吴圩机场</li>
<li data-value="NTG" data-tags="NanTongXingDong" class="mui-table-view-cell mui-group-list-item">南通兴东机场</li>
<li data-value="NNY" data-tags="NanYangJiangYing" class="mui-table-view-cell mui-group-list-item">南阳姜营机场</li>
<li data-value="NGB" data-tags="NingBoLiSheGuoJi" class="mui-table-view-cell mui-group-list-item">宁波栎社国际机场</li>
<li data-group="P" class="mui-table-view-divider mui-group-list-group">P</li>
<li data-value="SYM" data-tags="PuErSiMao" class="mui-table-view-cell mui-group-list-item">普洱思茅机场</li>
<li data-group="Q" class="mui-table-view-divider mui-group-list-group">Q</li>
<li data-value="NDG" data-tags="QiQiHaErSanJiaZi" class="mui-table-view-cell mui-group-list-item">齐齐哈尔三家子机场</li>
<li data-value="SHP" data-tags="QinHuangDaoShanHaiGuan" class="mui-table-view-cell mui-group-list-item">秦皇岛山海关机场</li>
<li data-value="TAO" data-tags="QingDaoLiuTingGuoJi" class="mui-table-view-cell mui-group-list-item">青岛流亭国际机场</li>
<li data-value="JUZ" data-tags="QuZhou" class="mui-table-view-cell mui-group-list-item">衢州机场</li>
<li data-value="JJN" data-tags="QuanZhouJinJiang" class="mui-table-view-cell mui-group-list-item">泉州晋江机场</li>
<li data-group="R" class="mui-table-view-divider mui-group-list-group">R</li>
<li data-value="RKZ" data-tags="RiKaZeHePing" class="mui-table-view-cell mui-group-list-item">日喀则和平机场</li>
<li data-group="S" class="mui-table-view-divider mui-group-list-group">S</li>
<li data-value="SYX" data-tags="SanYaFengHuangGuoJi" class="mui-table-view-cell mui-group-list-item">三亚凤凰国际机场</li>
<li data-value="SWA" data-tags="ShanTouWaiSha" class="mui-table-view-cell mui-group-list-item">汕头外砂机场</li>
<li data-value="SHA" data-tags="ShangHaiHongQiaoGuoJi" class="mui-table-view-cell mui-group-list-item">上海虹桥国际机场</li>
<li data-value="PVG" data-tags="ShangHaiPuDongGuoJi" class="mui-table-view-cell mui-group-list-item">上海浦东国际机场</li>
<li data-value="SZX" data-tags="ShenChouBaoAnGuoJi" class="mui-table-view-cell mui-group-list-item">深圳宝安国际机场</li>
<li data-value="SHE" data-tags="ShenYangTaoXianGuoJi" class="mui-table-view-cell mui-group-list-item">沈阳桃仙国际机场</li>
<li data-value="SJW" data-tags="ShiJiaZhuangZhengDingGuoJi" class="mui-table-view-cell mui-group-list-item">石家庄正定国际机场</li>
<li data-value="WUX" data-tags="SuNanShuoFangGuoJi" class="mui-table-view-cell mui-group-list-item">苏南硕放国际机场</li>
<li data-group="T" class="mui-table-view-divider mui-group-list-group">T</li>
<li data-value="TCG" data-tags="TaCheng" class="mui-table-view-cell mui-group-list-item">塔城机场</li>
<li data-value="TYN" data-tags="TaiYuanWuSuGuoJi" class="mui-table-view-cell mui-group-list-item">太原武宿国际机场</li>
<li data-value="HYN" data-tags="TaiZhouLuQiao-HuangYanJiChang" class="mui-table-view-cell mui-group-list-item">台州路桥机场 (黄岩机场)</li>
<li data-value="TVS" data-tags="TangShanSanNvHe" class="mui-table-view-cell mui-group-list-item">唐山三女河机场</li>
<li data-value="TCZ" data-tags="TengChongTuoFeng" class="mui-table-view-cell mui-group-list-item">腾冲驼峰机场</li>
<li data-value="TSN" data-tags="TianJinBinHaiGuoJi" class="mui-table-view-cell mui-group-list-item">天津滨海国际机场</li>
<li data-value="TGO" data-tags="TongLiao" class="mui-table-view-cell mui-group-list-item">通辽机场</li>
<li data-value="TEN" data-tags="TongRenFengHuang" class="mui-table-view-cell mui-group-list-item">铜仁凤凰机场</li>
<li data-group="W" class="mui-table-view-divider mui-group-list-group">W</li>
<li data-value="WXN" data-tags="WanZhouWuQiao" class="mui-table-view-cell mui-group-list-item">万州五桥机场</li>
<li data-value="WEF" data-tags="WeiFang" class="mui-table-view-cell mui-group-list-item">潍坊机场</li>
<li data-value="WEH" data-tags="WeiHaiDaShuiBo" class="mui-table-view-cell mui-group-list-item">威海大水泊机场</li>
<li data-value="WNH" data-tags="WenShanPuZheHei" class="mui-table-view-cell mui-group-list-item">文山普者黑机场</li>
<li data-value="WNZ" data-tags="WenZhouYongQiangGuoJi" class="mui-table-view-cell mui-group-list-item">温州永强国际机场</li>
<li data-value="WUA" data-tags="WuHai" class="mui-table-view-cell mui-group-list-item">乌海机场</li>
<li data-value="WUH" data-tags="WuHanTianHeGuoJi" class="mui-table-view-cell mui-group-list-item">武汉天河国际机场</li>
<li data-value="HLH" data-tags="WuLanHaoTe" class="mui-table-view-cell mui-group-list-item">乌兰浩特机场</li>
<li data-value="URC" data-tags="WuLuMuQiDiWoBaoGuoJi" class="mui-table-view-cell mui-group-list-item">乌鲁木齐地窝堡国际机场</li>
<li data-value="WUS" data-tags="WuYiShan" class="mui-table-view-cell mui-group-list-item">武夷山机场</li>
<li data-value="WUZ" data-tags="WuZhouChangZhouDao" class="mui-table-view-cell mui-group-list-item">梧州长洲岛机场</li>
<li data-group="X" class="mui-table-view-divider mui-group-list-group">X</li>
<li data-value="XIY" data-tags="XiAnXianYangGuoJi" class="mui-table-view-cell mui-group-list-item">西安咸阳国际机场</li>
<li data-value="XIC" data-tags="XiChangQingShan" class="mui-table-view-cell mui-group-list-item">西昌青山机场</li>
<li data-value="XIL" data-tags="XiLinHaoTe" class="mui-table-view-cell mui-group-list-item">锡林浩特机场</li>
<li data-value="XNN" data-tags="XiNingCaoJiaBao" class="mui-table-view-cell mui-group-list-item">西宁曹家堡机场</li>
<li data-value="JHG" data-tags="XiShuangBanNaGaSa" class="mui-table-view-cell mui-group-list-item">西双版纳嘎洒机场</li>
<li data-value="XMN" data-tags="XiaMenGaoQiGuoJi" class="mui-table-view-cell mui-group-list-item">厦门高崎国际机场</li>
<li data-value="HKG" data-tags="XiangGangGuoJi" class="mui-table-view-cell mui-group-list-item">香港国际机场</li>
<li data-value="XFN" data-tags="XiangYangLiuJi" class="mui-table-view-cell mui-group-list-item">襄阳刘集机场</li>
<li data-value="ACX" data-tags="XingYi" class="mui-table-view-cell mui-group-list-item">兴义机场</li>
<li data-value="XUZ" data-tags="XuZhouGuanYin" class="mui-table-view-cell mui-group-list-item">徐州观音机场</li>
<li data-group="Y" class="mui-table-view-divider mui-group-list-group">Y</li>
<li data-value="ENY" data-tags="YanAnErShiLiBao" class="mui-table-view-cell mui-group-list-item">延安二十里堡机场</li>
<li data-value="YNZ" data-tags="YanCheng" class="mui-table-view-cell mui-group-list-item">盐城机场</li>
<li data-value="YNJ" data-tags="YanJiChaoYangChuan" class="mui-table-view-cell mui-group-list-item">延吉朝阳川机场</li>
<li data-value="YNT" data-tags="YanTaiLaiShanGuoJi" class="mui-table-view-cell mui-group-list-item">烟台莱山国际机场</li>
<li data-value="YBP" data-tags="YiBinCaiBa" class="mui-table-view-cell mui-group-list-item">宜宾菜坝机场</li>
<li data-value="YIH" data-tags="YiChangSanXia" class="mui-table-view-cell mui-group-list-item">宜昌三峡机场</li>
<li data-value="LDS" data-tags="YiChunLinDu" class="mui-table-view-cell mui-group-list-item">伊春林都机场</li>
<li data-value="YIN" data-tags="YiNing" class="mui-table-view-cell mui-group-list-item">伊宁机场</li>
<li data-value="YIW" data-tags="YiWu" class="mui-table-view-cell mui-group-list-item">义乌机场</li>
<li data-value="INC" data-tags="YinChuanHeDong" class="mui-table-view-cell mui-group-list-item">银川河东机场</li>
<li data-value="LLF" data-tags="YongZhouLingLing" class="mui-table-view-cell mui-group-list-item">永州零陵机场</li>
<li data-value="UYN" data-tags="YuLinYuYang" class="mui-table-view-cell mui-group-list-item">榆林榆阳机场</li>
<li data-value="YUS" data-tags="YuShuBaTang" class="mui-table-view-cell mui-group-list-item">玉树巴塘机场</li>
<li data-value="YCU" data-tags="YunChengZhangXiao" class="mui-table-view-cell mui-group-list-item">运城张孝机场</li>
<li data-group="Z" class="mui-table-view-divider mui-group-list-group">Z</li>
<li data-value="ZHA" data-tags="ZhanJiang" class="mui-table-view-cell mui-group-list-item">湛江机场</li>
<li data-value="ZAT" data-tags="ZhaoTong" class="mui-table-view-cell mui-group-list-item">昭通机场</li>
<li data-value="CGO" data-tags="ZhengZhouXinZhengGuoJi" class="mui-table-view-cell mui-group-list-item">郑州新郑国际机场</li>
<li data-value="HJJ" data-tags="ZhiJiang" class="mui-table-view-cell mui-group-list-item">芷江机场</li>
<li data-value="CKG" data-tags="ZhongQingJiangBeiGuoJi" class="mui-table-view-cell mui-group-list-item">重庆江北国际机场</li>
<li data-value="ZHY" data-tags="ZhongWeiXiangShan" class="mui-table-view-cell mui-group-list-item">中卫香山机场</li>
<li data-value="HSN" data-tags="ZhouShanZhuJiaJian" class="mui-table-view-cell mui-group-list-item">舟山朱家尖机场</li>
<li data-value="ZUH" data-tags="ZhuHaiSanZao" class="mui-table-view-cell mui-group-list-item">珠海三灶机场</li>
<li data-group="A" class="mui-table-view-divider mui-indexed-list-group">A</li>
<li data-value="AKU" data-tags="AKeSu" class="mui-table-view-cell mui-indexed-list-item">阿克苏机场</li>
<li data-value="BPL" data-tags="ALaShanKou" class="mui-table-view-cell mui-indexed-list-item">阿拉山口机场</li>
<li data-value="AAT" data-tags="ALeTai" class="mui-table-view-cell mui-indexed-list-item">阿勒泰机场</li>
<li data-value="NGQ" data-tags="ALiKunSha" class="mui-table-view-cell mui-indexed-list-item">阿里昆莎机场</li>
<li data-value="AQG" data-tags="AnQingTianZhuShan" class="mui-table-view-cell mui-indexed-list-item">安庆天柱山机场</li>
<li data-value="MFM" data-tags="AoMenGuoJi" class="mui-table-view-cell mui-indexed-list-item">澳门国际机场</li>
<li data-group="B" class="mui-table-view-divider mui-indexed-list-group">B</li>
<li data-value="BSD" data-tags="BaoShan" class="mui-table-view-cell mui-indexed-list-item">保山机场</li>
<li data-value="BAV" data-tags="BaoTou" class="mui-table-view-cell mui-indexed-list-item">包头机场</li>
<li data-value="BHY" data-tags="BeiHaiFuCheng" class="mui-table-view-cell mui-indexed-list-item">北海福成机场</li>
<li data-value="NAY" data-tags="BeiJingNanYuan" class="mui-table-view-cell mui-indexed-list-item">北京南苑机场</li>
<li data-value="PEK" data-tags="BeiJingShouDuGuoJi" class="mui-table-view-cell mui-indexed-list-item">北京首都国际机场</li>
<li data-group="C" class="mui-table-view-divider mui-indexed-list-group">C</li>
<li data-value="NBS" data-tags="ChangBaiShan" class="mui-table-view-cell mui-indexed-list-item">长白山机场</li>
<li data-value="CGQ" data-tags="ChangChunLongJiaGuoJi" class="mui-table-view-cell mui-indexed-list-item">长春龙嘉国际机场</li>
<li data-value="CGD" data-tags="ChangDeTaoHuaYuan" class="mui-table-view-cell mui-indexed-list-item">常德桃花源机场</li>
<li data-value="BPX" data-tags="ChangDuBangDa" class="mui-table-view-cell mui-indexed-list-item">昌都邦达机场</li>
<li data-value="CSX" data-tags="ChangShaHuangHuaGuoJi" class="mui-table-view-cell mui-indexed-list-item">长沙黄花国际机场</li>
<li data-value="CIH" data-tags="ChangZhiWangCun" class="mui-table-view-cell mui-indexed-list-item">长治王村机场</li>
<li data-value="CZX" data-tags="ChangZhouBenNiu" class="mui-table-view-cell mui-indexed-list-item">常州奔牛机场</li>
<li data-value="CTU" data-tags="ChengDuShuangLiuGuoJi" class="mui-table-view-cell mui-indexed-list-item">成都双流国际机场</li>
<li data-value="CIF" data-tags="ChiFeng" class="mui-table-view-cell mui-indexed-list-item">赤峰机场</li>
<li data-group="D" class="mui-table-view-divider mui-indexed-list-group">D</li>
<li data-value="DLU" data-tags="DaLi" class="mui-table-view-cell mui-indexed-list-item">大理机场</li>
<li data-value="DLC" data-tags="DaLianZhouShuiZiGuoJi" class="mui-table-view-cell mui-indexed-list-item">大连周水子国际机场</li>
<li data-value="DQA" data-tags="DaQingSaErTu" class="mui-table-view-cell mui-indexed-list-item">大庆萨尔图机场</li>
<li data-value="DAT" data-tags="DaTongDongWangZhuang" class="mui-table-view-cell mui-indexed-list-item">大同东王庄机场</li>
<li data-value="DAX" data-tags="DaZhouHeShi" class="mui-table-view-cell mui-indexed-list-item">达州河市机场</li>
<li data-value="DDG" data-tags="DanDongLangTou" class="mui-table-view-cell mui-indexed-list-item">丹东浪头机场</li>
<li data-value="LUM" data-tags="DeHongMangShi" class="mui-table-view-cell mui-indexed-list-item">德宏芒市机场</li>
<li data-value="DIG" data-tags="DiQingXiangGeLiLa" class="mui-table-view-cell mui-indexed-list-item">迪庆香格里拉机场</li>
<li data-value="DOY" data-tags="DongYing" class="mui-table-view-cell mui-indexed-list-item">东营机场</li>
<li data-value="DNH" data-tags="DunHuang" class="mui-table-view-cell mui-indexed-list-item">敦煌机场</li>
<li data-group="E" class="mui-table-view-divider mui-indexed-list-group">E</li>
<li data-value="DSN" data-tags="EErDuoSi" class="mui-table-view-cell mui-indexed-list-item">鄂尔多斯机场</li>
<li data-value="ENH" data-tags="EnShiXuJiaPing" class="mui-table-view-cell mui-indexed-list-item">恩施许家坪机场</li>
<li data-value="ERL" data-tags="ErLianHaoTeSaiWuSuGuoJi" class="mui-table-view-cell mui-indexed-list-item">二连浩特赛乌苏国际机场</li>
<li data-group="F" class="mui-table-view-divider mui-indexed-list-group">F</li>
<li data-value="FUG" data-tags="FuYangXiGuan" class="mui-table-view-cell mui-indexed-list-item">阜阳西关机场</li>
<li data-value="FOC" data-tags="FuZhouChangLeGuoJi" class="mui-table-view-cell mui-indexed-list-item">福州长乐国际机场</li>
<li data-group="G" class="mui-table-view-divider mui-indexed-list-group">G</li>
<li data-value="KOW" data-tags="GanZhouHuangJin" class="mui-table-view-cell mui-indexed-list-item">赣州黄金机场</li>
<li data-value="GOQ" data-tags="GeErMu" class="mui-table-view-cell mui-indexed-list-item">格尔木机场</li>
<li data-value="GYU" data-tags="GuYuanLiuPanShan" class="mui-table-view-cell mui-indexed-list-item">固原六盘山机场</li>
<li data-value="GYS" data-tags="GuangYuanPanLong" class="mui-table-view-cell mui-indexed-list-item">广元盘龙机场</li>
<li data-value="CAN" data-tags="GuangZhouBaiYunGuoJi" class="mui-table-view-cell mui-indexed-list-item">广州白云国际机场</li>
<li data-value="KWL" data-tags="GuiLinLiangJiangGuoJi" class="mui-table-view-cell mui-indexed-list-item">桂林两江国际机场</li>
<li data-value="KWE" data-tags="GuiYangLongDongBaoGuoJi" class="mui-table-view-cell mui-indexed-list-item">贵阳龙洞堡国际机场</li>
<li data-group="H" class="mui-table-view-divider mui-indexed-list-group">H</li>
<li data-value="HRB" data-tags="HaErBinTaiPingGuoJi" class="mui-table-view-cell mui-indexed-list-item">哈尔滨太平国际机场</li>
<li data-value="HMI" data-tags="HaMi" class="mui-table-view-cell mui-indexed-list-item">哈密机场</li>
<li data-value="HAK" data-tags="HaiKouMeiLanGuoJi" class="mui-table-view-cell mui-indexed-list-item">海口美兰国际机场</li>
<li data-value="HLD" data-tags="HaiLaErDongShanGuoJi" class="mui-table-view-cell mui-indexed-list-item">海拉尔东山国际机场</li>
<li data-value="HDG" data-tags="HanDan" class="mui-table-view-cell mui-indexed-list-item">邯郸机场</li>
<li data-value="HZG" data-tags="HanZhong" class="mui-table-view-cell mui-indexed-list-item">汉中机场</li>
<li data-value="HGH" data-tags="HangZhouXiaoShanGuoJi" class="mui-table-view-cell mui-indexed-list-item">杭州萧山国际机场</li>
<li data-value="HFE" data-tags="HeFeiLuoGangGuoJi" class="mui-table-view-cell mui-indexed-list-item">合肥骆岗国际机场</li>
<li data-value="HTN" data-tags="HeTian" class="mui-table-view-cell mui-indexed-list-item">和田机场</li>
<li data-value="HEK" data-tags="HeiHe" class="mui-table-view-cell mui-indexed-list-item">黑河机场</li>
<li data-value="HET" data-tags="HuHeHaoTeBaiTaGuoJi" class="mui-table-view-cell mui-indexed-list-item">呼和浩特白塔国际机场</li>
<li data-value="HIA" data-tags="HuaiAnLianShui" class="mui-table-view-cell mui-indexed-list-item">淮安涟水机场</li>
<li data-value="TXN" data-tags="HuangShanTunXiGuoJi" class="mui-table-view-cell mui-indexed-list-item">黄山屯溪国际机场</li>
<li data-group="J" class="mui-table-view-divider mui-indexed-list-group">J</li>
<li data-value="TNA" data-tags="JiNanYaoQiangGuoJi" class="mui-table-view-cell mui-indexed-list-item">济南遥墙国际机场</li>
<li data-value="JNG" data-tags="JiNingQuFu" class="mui-table-view-cell mui-indexed-list-item">济宁曲阜机场</li>
<li data-value="JXA" data-tags="JiXiXingKaiHu" class="mui-table-view-cell mui-indexed-list-item">鸡西兴凯湖机场</li>
<li data-value="JMU" data-tags="JiaMuSiDongJiao" class="mui-table-view-cell mui-indexed-list-item">佳木斯东郊机场</li>
<li data-value="JGN" data-tags="JiaYuGuan" class="mui-table-view-cell mui-indexed-list-item">嘉峪关机场</li>
<li data-value="JNZ" data-tags="JinZhouXiaoLingZi" class="mui-table-view-cell mui-indexed-list-item">锦州小岭子机场</li>
<li data-value="JDZ" data-tags="JingDeZhen" class="mui-table-view-cell mui-indexed-list-item">景德镇机场</li>
<li data-value="JGS" data-tags="JingGangShan" class="mui-table-view-cell mui-indexed-list-item">井冈山机场</li>
<li data-value="JIU" data-tags="JiuJiangLuShan" class="mui-table-view-cell mui-indexed-list-item">九江庐山机场</li>
<li data-value="JZH" data-tags="JiuZhaiHuangLong" class="mui-table-view-cell mui-indexed-list-item">九寨黄龙机场</li>
<li data-group="K" class="mui-table-view-divider mui-indexed-list-group">K</li>
<li data-value="KHG" data-tags="KaShi" class="mui-table-view-cell mui-indexed-list-item">喀什机场</li>
<li data-value="KRY" data-tags="KeLaMaYi" class="mui-table-view-cell mui-indexed-list-item">克拉玛依机场</li>
<li data-value="KCA" data-tags="KuCheGuiZi" class="mui-table-view-cell mui-indexed-list-item">库车龟兹机场</li>
<li data-value="KRL" data-tags="KuErLe" class="mui-table-view-cell mui-indexed-list-item">库尔勒机场</li>
<li data-value="KMG" data-tags="KunMingWuJiaBaGuoJi" class="mui-table-view-cell mui-indexed-list-item">昆明巫家坝国际机场</li>
<li data-group="L" class="mui-table-view-divider mui-indexed-list-group">L</li>
<li data-value="LXA" data-tags="LaSaGongGa" class="mui-table-view-cell mui-indexed-list-item">拉萨贡嘎机场</li>
<li data-value="LHW" data-tags="LanZhouZhongChuan" class="mui-table-view-cell mui-indexed-list-item">兰州中川机场</li>
<li data-value="LJG" data-tags="LiJiangSanYi" class="mui-table-view-cell mui-indexed-list-item">丽江三义机场</li>
<li data-value="HZH" data-tags="LiPing" class="mui-table-view-cell mui-indexed-list-item">黎平机场</li>
<li data-value="LYG" data-tags="LianYunGangBaiTaBu" class="mui-table-view-cell mui-indexed-list-item">连云港白塔埠机场</li>
<li data-value="LNJ" data-tags="LinCang" class="mui-table-view-cell mui-indexed-list-item">临沧机场</li>
<li data-value="LYI" data-tags="LinYi" class="mui-table-view-cell mui-indexed-list-item">临沂机场</li>
<li data-value="LZY" data-tags="LinZhiMiLin" class="mui-table-view-cell mui-indexed-list-item">林芝米林机场</li>
<li data-value="LZH" data-tags="LiuZhouBaiLian" class="mui-table-view-cell mui-indexed-list-item">柳州白莲机场</li>
<li data-value="LCX" data-tags="LongYanGuanZhiShan" class="mui-table-view-cell mui-indexed-list-item">龙岩冠豸山机场</li>
<li data-value="LZO" data-tags="LuZhouLanTian" class="mui-table-view-cell mui-indexed-list-item">泸州蓝田机场</li>
<li data-value="LYA" data-tags="LuoYangBeiJiao" class="mui-table-view-cell mui-indexed-list-item">洛阳北郊机场</li>
<li data-group="M" class="mui-table-view-divider mui-indexed-list-group">M</li>
<li data-value="NZH" data-tags="ManZhouLiXiJiao" class="mui-table-view-cell mui-indexed-list-item">满洲里西郊机场</li>
<li data-value="MIG" data-tags="MianYangNanJiao" class="mui-table-view-cell mui-indexed-list-item">绵阳南郊机场</li>
<li data-value="OHE" data-tags="MoHeGuLian" class="mui-table-view-cell mui-indexed-list-item">漠河古莲机场</li>
<li data-value="MDG" data-tags="MuDanJiangHaiLang" class="mui-table-view-cell mui-indexed-list-item">牡丹江海浪机场</li>
<li data-group="N" class="mui-table-view-divider mui-indexed-list-group">N</li>
<li data-value="KHN" data-tags="NanChangChangBeiGuoJi" class="mui-table-view-cell mui-indexed-list-item">南昌昌北国际机场</li>
<li data-value="NAO" data-tags="NanChongGaoPing" class="mui-table-view-cell mui-indexed-list-item">南充高坪机场</li>
<li data-value="NKG" data-tags="NanJingLuKouGuoJi" class="mui-table-view-cell mui-indexed-list-item">南京禄口国际机场</li>
<li data-value="NNG" data-tags="NanNingWuXu" class="mui-table-view-cell mui-indexed-list-item">南宁吴圩机场</li>
<li data-value="NTG" data-tags="NanTongXingDong" class="mui-table-view-cell mui-indexed-list-item">南通兴东机场</li>
<li data-value="NNY" data-tags="NanYangJiangYing" class="mui-table-view-cell mui-indexed-list-item">南阳姜营机场</li>
<li data-value="NGB" data-tags="NingBoLiSheGuoJi" class="mui-table-view-cell mui-indexed-list-item">宁波栎社国际机场</li>
<li data-group="P" class="mui-table-view-divider mui-indexed-list-group">P</li>
<li data-value="SYM" data-tags="PuErSiMao" class="mui-table-view-cell mui-indexed-list-item">普洱思茅机场</li>
<li data-group="Q" class="mui-table-view-divider mui-indexed-list-group">Q</li>
<li data-value="NDG" data-tags="QiQiHaErSanJiaZi" class="mui-table-view-cell mui-indexed-list-item">齐齐哈尔三家子机场</li>
<li data-value="SHP" data-tags="QinHuangDaoShanHaiGuan" class="mui-table-view-cell mui-indexed-list-item">秦皇岛山海关机场</li>
<li data-value="TAO" data-tags="QingDaoLiuTingGuoJi" class="mui-table-view-cell mui-indexed-list-item">青岛流亭国际机场</li>
<li data-value="JUZ" data-tags="QuZhou" class="mui-table-view-cell mui-indexed-list-item">衢州机场</li>
<li data-value="JJN" data-tags="QuanZhouJinJiang" class="mui-table-view-cell mui-indexed-list-item">泉州晋江机场</li>
<li data-group="R" class="mui-table-view-divider mui-indexed-list-group">R</li>
<li data-value="RKZ" data-tags="RiKaZeHePing" class="mui-table-view-cell mui-indexed-list-item">日喀则和平机场</li>
<li data-group="S" class="mui-table-view-divider mui-indexed-list-group">S</li>
<li data-value="SYX" data-tags="SanYaFengHuangGuoJi" class="mui-table-view-cell mui-indexed-list-item">三亚凤凰国际机场</li>
<li data-value="SWA" data-tags="ShanTouWaiSha" class="mui-table-view-cell mui-indexed-list-item">汕头外砂机场</li>
<li data-value="SHA" data-tags="ShangHaiHongQiaoGuoJi" class="mui-table-view-cell mui-indexed-list-item">上海虹桥国际机场</li>
<li data-value="PVG" data-tags="ShangHaiPuDongGuoJi" class="mui-table-view-cell mui-indexed-list-item">上海浦东国际机场</li>
<li data-value="SZX" data-tags="ShenChouBaoAnGuoJi" class="mui-table-view-cell mui-indexed-list-item">深圳宝安国际机场</li>
<li data-value="SHE" data-tags="ShenYangTaoXianGuoJi" class="mui-table-view-cell mui-indexed-list-item">沈阳桃仙国际机场</li>
<li data-value="SJW" data-tags="ShiJiaZhuangZhengDingGuoJi" class="mui-table-view-cell mui-indexed-list-item">石家庄正定国际机场</li>
<li data-value="WUX" data-tags="SuNanShuoFangGuoJi" class="mui-table-view-cell mui-indexed-list-item">苏南硕放国际机场</li>
<li data-group="T" class="mui-table-view-divider mui-indexed-list-group">T</li>
<li data-value="TCG" data-tags="TaCheng" class="mui-table-view-cell mui-indexed-list-item">塔城机场</li>
<li data-value="TYN" data-tags="TaiYuanWuSuGuoJi" class="mui-table-view-cell mui-indexed-list-item">太原武宿国际机场</li>
<li data-value="HYN" data-tags="TaiZhouLuQiao-HuangYanJiChang" class="mui-table-view-cell mui-indexed-list-item">台州路桥机场 (黄岩机场)</li>
<li data-value="TVS" data-tags="TangShanSanNvHe" class="mui-table-view-cell mui-indexed-list-item">唐山三女河机场</li>
<li data-value="TCZ" data-tags="TengChongTuoFeng" class="mui-table-view-cell mui-indexed-list-item">腾冲驼峰机场</li>
<li data-value="TSN" data-tags="TianJinBinHaiGuoJi" class="mui-table-view-cell mui-indexed-list-item">天津滨海国际机场</li>
<li data-value="TGO" data-tags="TongLiao" class="mui-table-view-cell mui-indexed-list-item">通辽机场</li>
<li data-value="TEN" data-tags="TongRenFengHuang" class="mui-table-view-cell mui-indexed-list-item">铜仁凤凰机场</li>
<li data-group="W" class="mui-table-view-divider mui-indexed-list-group">W</li>
<li data-value="WXN" data-tags="WanZhouWuQiao" class="mui-table-view-cell mui-indexed-list-item">万州五桥机场</li>
<li data-value="WEF" data-tags="WeiFang" class="mui-table-view-cell mui-indexed-list-item">潍坊机场</li>
<li data-value="WEH" data-tags="WeiHaiDaShuiBo" class="mui-table-view-cell mui-indexed-list-item">威海大水泊机场</li>
<li data-value="WNH" data-tags="WenShanPuZheHei" class="mui-table-view-cell mui-indexed-list-item">文山普者黑机场</li>
<li data-value="WNZ" data-tags="WenZhouYongQiangGuoJi" class="mui-table-view-cell mui-indexed-list-item">温州永强国际机场</li>
<li data-value="WUA" data-tags="WuHai" class="mui-table-view-cell mui-indexed-list-item">乌海机场</li>
<li data-value="WUH" data-tags="WuHanTianHeGuoJi" class="mui-table-view-cell mui-indexed-list-item">武汉天河国际机场</li>
<li data-value="HLH" data-tags="WuLanHaoTe" class="mui-table-view-cell mui-indexed-list-item">乌兰浩特机场</li>
<li data-value="URC" data-tags="WuLuMuQiDiWoBaoGuoJi" class="mui-table-view-cell mui-indexed-list-item">乌鲁木齐地窝堡国际机场</li>
<li data-value="WUS" data-tags="WuYiShan" class="mui-table-view-cell mui-indexed-list-item">武夷山机场</li>
<li data-value="WUZ" data-tags="WuZhouChangZhouDao" class="mui-table-view-cell mui-indexed-list-item">梧州长洲岛机场</li>
<li data-group="X" class="mui-table-view-divider mui-indexed-list-group">X</li>
<li data-value="XIY" data-tags="XiAnXianYangGuoJi" class="mui-table-view-cell mui-indexed-list-item">西安咸阳国际机场</li>
<li data-value="XIC" data-tags="XiChangQingShan" class="mui-table-view-cell mui-indexed-list-item">西昌青山机场</li>
<li data-value="XIL" data-tags="XiLinHaoTe" class="mui-table-view-cell mui-indexed-list-item">锡林浩特机场</li>
<li data-value="XNN" data-tags="XiNingCaoJiaBao" class="mui-table-view-cell mui-indexed-list-item">西宁曹家堡机场</li>
<li data-value="JHG" data-tags="XiShuangBanNaGaSa" class="mui-table-view-cell mui-indexed-list-item">西双版纳嘎洒机场</li>
<li data-value="XMN" data-tags="XiaMenGaoQiGuoJi" class="mui-table-view-cell mui-indexed-list-item">厦门高崎国际机场</li>
<li data-value="HKG" data-tags="XiangGangGuoJi" class="mui-table-view-cell mui-indexed-list-item">香港国际机场</li>
<li data-value="XFN" data-tags="XiangYangLiuJi" class="mui-table-view-cell mui-indexed-list-item">襄阳刘集机场</li>
<li data-value="ACX" data-tags="XingYi" class="mui-table-view-cell mui-indexed-list-item">兴义机场</li>
<li data-value="XUZ" data-tags="XuZhouGuanYin" class="mui-table-view-cell mui-indexed-list-item">徐州观音机场</li>
<li data-group="Y" class="mui-table-view-divider mui-indexed-list-group">Y</li>
<li data-value="ENY" data-tags="YanAnErShiLiBao" class="mui-table-view-cell mui-indexed-list-item">延安二十里堡机场</li>
<li data-value="YNZ" data-tags="YanCheng" class="mui-table-view-cell mui-indexed-list-item">盐城机场</li>
<li data-value="YNJ" data-tags="YanJiChaoYangChuan" class="mui-table-view-cell mui-indexed-list-item">延吉朝阳川机场</li>
<li data-value="YNT" data-tags="YanTaiLaiShanGuoJi" class="mui-table-view-cell mui-indexed-list-item">烟台莱山国际机场</li>
<li data-value="YBP" data-tags="YiBinCaiBa" class="mui-table-view-cell mui-indexed-list-item">宜宾菜坝机场</li>
<li data-value="YIH" data-tags="YiChangSanXia" class="mui-table-view-cell mui-indexed-list-item">宜昌三峡机场</li>
<li data-value="LDS" data-tags="YiChunLinDu" class="mui-table-view-cell mui-indexed-list-item">伊春林都机场</li>
<li data-value="YIN" data-tags="YiNing" class="mui-table-view-cell mui-indexed-list-item">伊宁机场</li>
<li data-value="YIW" data-tags="YiWu" class="mui-table-view-cell mui-indexed-list-item">义乌机场</li>
<li data-value="INC" data-tags="YinChuanHeDong" class="mui-table-view-cell mui-indexed-list-item">银川河东机场</li>
<li data-value="LLF" data-tags="YongZhouLingLing" class="mui-table-view-cell mui-indexed-list-item">永州零陵机场</li>
<li data-value="UYN" data-tags="YuLinYuYang" class="mui-table-view-cell mui-indexed-list-item">榆林榆阳机场</li>
<li data-value="YUS" data-tags="YuShuBaTang" class="mui-table-view-cell mui-indexed-list-item">玉树巴塘机场</li>
<li data-value="YCU" data-tags="YunChengZhangXiao" class="mui-table-view-cell mui-indexed-list-item">运城张孝机场</li>
<li data-group="Z" class="mui-table-view-divider mui-indexed-list-group">Z</li>
<li data-value="ZHA" data-tags="ZhanJiang" class="mui-table-view-cell mui-indexed-list-item">湛江机场</li>
<li data-value="ZAT" data-tags="ZhaoTong" class="mui-table-view-cell mui-indexed-list-item">昭通机场</li>
<li data-value="CGO" data-tags="ZhengZhouXinZhengGuoJi" class="mui-table-view-cell mui-indexed-list-item">郑州新郑国际机场</li>
<li data-value="HJJ" data-tags="ZhiJiang" class="mui-table-view-cell mui-indexed-list-item">芷江机场</li>
<li data-value="CKG" data-tags="ZhongQingJiangBeiGuoJi" class="mui-table-view-cell mui-indexed-list-item">重庆江北国际机场</li>
<li data-value="ZHY" data-tags="ZhongWeiXiangShan" class="mui-table-view-cell mui-indexed-list-item">中卫香山机场</li>
<li data-value="HSN" data-tags="ZhouShanZhuJiaJian" class="mui-table-view-cell mui-indexed-list-item">舟山朱家尖机场</li>
<li data-value="ZUH" data-tags="ZhuHaiSanZao" class="mui-table-view-cell mui-indexed-list-item">珠海三灶机场</li>
</ul>
</div>
</div>
......
......@@ -12,14 +12,34 @@
<link rel="stylesheet" href="../css/mui.min.css">
<!--App自定义的css-->
<link rel="stylesheet" type="text/css" href="../css/app.css"/>
<style type="text/css">
p{
text-indent: 22px;
}
.des {
margin: .5em 0;
}
.des>li {
font-size: 14px;
color: #8f8f94;
}
</style>
</head>
<body>
<header class="mui-bar mui-bar-nav">
<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
<h1 class="mui-title">图片懒加载</h1>
<h1 class="mui-title">lazyload(延迟加载) </h1>
</header>
<div class="mui-content">
<div class="mui-content-padded">
<p>延迟加载的理念:页面初始化时,暂不加载处于屏幕可见区域之外的图片。该方案会有如下几大好处:</p>
<ul class="des">
<li>加快页面渲染速度</li>
<li>提升页面滚动性能</li>
<li>默认不下载屏幕外的图片,减少网络流量</li>
</ul>
</div>
<ul id="list" class="mui-table-view mui-table-view-chevron">
</ul>
......
(function(mui, window, document, undefined) {
mui.init();
var get = function(id) {
return document.getElementById(id);
};
var qsa = function(sel) {
return [].slice.call(document.querySelectorAll(sel));
};
var ui = {
question: get('question'),
contact: get('contact'),
imageList: get('image-list'),
submit: get('submit')
};
ui.clearForm = function() {
ui.question.value = '';
ui.contact.value = '';
ui.imageList.innerHTML = '';
ui.newPlaceholder();
};
ui.getFileInputArray = function() {
return [].slice.call(ui.imageList.querySelectorAll('input[type="file"]'));
};
ui.getFileInputIdArray = function() {
var fileInputArray = ui.getFileInputArray();
var idArray = [];
fileInputArray.forEach(function(fileInput) {
if (fileInput.value != '') {
idArray.push(fileInput.getAttribute('id'));
}
});
return idArray;
};
var imageIndexIdNum = 0;
ui.newPlaceholder = function() {
var fileInputArray = ui.getFileInputArray();
if (fileInputArray &&
fileInputArray.length > 0 &&
fileInputArray[fileInputArray.length - 1].parentNode.classList.contains('space')) {
return;
}
imageIndexIdNum++;
var placeholder = document.createElement('div');
placeholder.setAttribute('class', 'image-item space');
var closeButton = document.createElement('div');
closeButton.setAttribute('class', 'image-close');
closeButton.innerHTML = 'X';
closeButton.addEventListener('click', function(event) {
event.stopPropagation();
event.cancelBubble = true;
setTimeout(function() {
ui.imageList.removeChild(placeholder);
}, 0);
return false;
}, false);
var fileInput = document.createElement('input');
fileInput.setAttribute('type', 'file');
fileInput.setAttribute('accept', 'image/*');
fileInput.setAttribute('id', 'image-' + imageIndexIdNum);
fileInput.addEventListener('change', function(event) {
var file = fileInput.files[0];
if (file) {
var reader = new FileReader();
reader.onload = function() {
placeholder.style.backgroundImage = 'url("' + reader.result + '")';
}
reader.readAsDataURL(file);
placeholder.classList.remove('space');
ui.newPlaceholder();
}
}, false);
placeholder.appendChild(closeButton);
placeholder.appendChild(fileInput);
ui.imageList.appendChild(placeholder);
};
ui.newPlaceholder();
ui.submit.addEventListener('tap', function(event) {
if (ui.question.value == '' ||
(ui.contact.value != '' &&
ui.contact.value.search(/^(\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+)|([1-9]\d{4,9})$/) != 0)) {
return mui.toast('信息填写不符合规范');
}
plus.nativeUI.showWaiting();
feedback.send({
question: ui.question.value,
contact: ui.contact.value,
images: ui.getFileInputIdArray()
}, function() {
plus.nativeUI.closeWaiting();
mui.toast('感谢您的建议~');
ui.clearForm();
mui.back();
});
}, false);
})(mui, window, document, undefined);
\ No newline at end of file
......@@ -4223,6 +4223,7 @@ var mui = (function(document, undefined) {
self.gotoItem((e.detail.tabNumber || 0), self.options.bounceTime);
},
_handleIndicatorTap: function(event) {
var self = this;
var target = event.target;
if (target.classList.contains(CLASS_ACTION_PREVIOUS) || target.classList.contains(CLASS_ACTION_NEXT)) {
self[target.classList.contains(CLASS_ACTION_PREVIOUS) ? 'prevItem' : 'nextItem']();
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
/*
json2.js
2014-02-04
Public Domain.
NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
See http://www.JSON.org/js.html
This code should be minified before deployment.
See http://javascript.crockford.com/jsmin.html
USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
NOT CONTROL.
This file creates a global JSON object containing two methods: stringify
and parse.
JSON.stringify(value, replacer, space)
value any JavaScript value, usually an object or array.
replacer an optional parameter that determines how object
values are stringified for objects. It can be a
function or an array of strings.
space an optional parameter that specifies the indentation
of nested structures. If it is omitted, the text will
be packed without extra whitespace. If it is a number,
it will specify the number of spaces to indent at each
level. If it is a string (such as '\t' or '&nbsp;'),
it contains the characters used to indent at each level.
This method produces a JSON text from a JavaScript value.
When an object value is found, if the object contains a toJSON
method, its toJSON method will be called and the result will be
stringified. A toJSON method does not serialize: it returns the
value represented by the name/value pair that should be serialized,
or undefined if nothing should be serialized. The toJSON method
will be passed the key associated with the value, and this will be
bound to the value
For example, this would serialize Dates as ISO strings.
Date.prototype.toJSON = function (key) {
function f(n) {
// Format integers to have at least two digits.
return n < 10 ? '0' + n : n;
}
return this.getUTCFullYear() + '-' +
f(this.getUTCMonth() + 1) + '-' +
f(this.getUTCDate()) + 'T' +
f(this.getUTCHours()) + ':' +
f(this.getUTCMinutes()) + ':' +
f(this.getUTCSeconds()) + 'Z';
};
You can provide an optional replacer method. It will be passed the
key and value of each member, with this bound to the containing
object. The value that is returned from your method will be
serialized. If your method returns undefined, then the member will
be excluded from the serialization.
If the replacer parameter is an array of strings, then it will be
used to select the members to be serialized. It filters the results
such that only members with keys listed in the replacer array are
stringified.
Values that do not have JSON representations, such as undefined or
functions, will not be serialized. Such values in objects will be
dropped; in arrays they will be replaced with null. You can use
a replacer function to replace those with JSON values.
JSON.stringify(undefined) returns undefined.
The optional space parameter produces a stringification of the
value that is filled with line breaks and indentation to make it
easier to read.
If the space parameter is a non-empty string, then that string will
be used for indentation. If the space parameter is a number, then
the indentation will be that many spaces.
Example:
text = JSON.stringify(['e', {pluribus: 'unum'}]);
// text is '["e",{"pluribus":"unum"}]'
text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
// text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
text = JSON.stringify([new Date()], function (key, value) {
return this[key] instanceof Date ?
'Date(' + this[key] + ')' : value;
});
// text is '["Date(---current time---)"]'
JSON.parse(text, reviver)
This method parses a JSON text to produce an object or array.
It can throw a SyntaxError exception.
The optional reviver parameter is a function that can filter and
transform the results. It receives each of the keys and values,
and its return value is used instead of the original value.
If it returns what it received, then the structure is not modified.
If it returns undefined then the member is deleted.
Example:
// Parse the text. Values that look like ISO date strings will
// be converted to Date objects.
myData = JSON.parse(text, function (key, value) {
var a;
if (typeof value === 'string') {
a =
/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
if (a) {
return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+a[5], +a[6]));
}
}
return value;
});
myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
var d;
if (typeof value === 'string' &&
value.slice(0, 5) === 'Date(' &&
value.slice(-1) === ')') {
d = new Date(value.slice(5, -1));
if (d) {
return d;
}
}
return value;
});
This is a reference implementation. You are free to copy, modify, or
redistribute.
*/
/*jslint evil: true, regexp: true */
/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
lastIndex, length, parse, prototype, push, replace, slice, stringify,
test, toJSON, toString, valueOf
*/
// Create a JSON object only if one does not already exist. We create the
// methods in a closure to avoid creating global variables.
if (typeof JSON !== 'object') {
JSON = {};
}
(function () {
'use strict';
function f(n) {
// Format integers to have at least two digits.
return n < 10 ? '0' + n : n;
}
if (typeof Date.prototype.toJSON !== 'function') {
Date.prototype.toJSON = function () {
return isFinite(this.valueOf())
? this.getUTCFullYear() + '-' +
f(this.getUTCMonth() + 1) + '-' +
f(this.getUTCDate()) + 'T' +
f(this.getUTCHours()) + ':' +
f(this.getUTCMinutes()) + ':' +
f(this.getUTCSeconds()) + 'Z'
: null;
};
String.prototype.toJSON =
Number.prototype.toJSON =
Boolean.prototype.toJSON = function () {
return this.valueOf();
};
}
var cx,
escapable,
gap,
indent,
meta,
rep;
function quote(string) {
// If the string contains no control characters, no quote characters, and no
// backslash characters, then we can safely slap some quotes around it.
// Otherwise we must also replace the offending characters with safe escape
// sequences.
escapable.lastIndex = 0;
return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
var c = meta[a];
return typeof c === 'string'
? c
: '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
}) + '"' : '"' + string + '"';
}
function str(key, holder) {
// Produce a string from holder[key].
var i, // The loop counter.
k, // The member key.
v, // The member value.
length,
mind = gap,
partial,
value = holder[key];
// If the value has a toJSON method, call it to obtain a replacement value.
if (value && typeof value === 'object' &&
typeof value.toJSON === 'function') {
value = value.toJSON(key);
}
// If we were called with a replacer function, then call the replacer to
// obtain a replacement value.
if (typeof rep === 'function') {
value = rep.call(holder, key, value);
}
// What happens next depends on the value's type.
switch (typeof value) {
case 'string':
return quote(value);
case 'number':
// JSON numbers must be finite. Encode non-finite numbers as null.
return isFinite(value) ? String(value) : 'null';
case 'boolean':
case 'null':
// If the value is a boolean or null, convert it to a string. Note:
// typeof null does not produce 'null'. The case is included here in
// the remote chance that this gets fixed someday.
return String(value);
// If the type is 'object', we might be dealing with an object or an array or
// null.
case 'object':
// Due to a specification blunder in ECMAScript, typeof null is 'object',
// so watch out for that case.
if (!value) {
return 'null';
}
// Make an array to hold the partial results of stringifying this object value.
gap += indent;
partial = [];
// Is the value an array?
if (Object.prototype.toString.apply(value) === '[object Array]') {
// The value is an array. Stringify every element. Use null as a placeholder
// for non-JSON values.
length = value.length;
for (i = 0; i < length; i += 1) {
partial[i] = str(i, value) || 'null';
}
// Join all of the elements together, separated with commas, and wrap them in
// brackets.
v = partial.length === 0
? '[]'
: gap
? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']'
: '[' + partial.join(',') + ']';
gap = mind;
return v;
}
// If the replacer is an array, use it to select the members to be stringified.
if (rep && typeof rep === 'object') {
length = rep.length;
for (i = 0; i < length; i += 1) {
if (typeof rep[i] === 'string') {
k = rep[i];
v = str(k, value);
if (v) {
partial.push(quote(k) + (gap ? ': ' : ':') + v);
}
}
}
} else {
// Otherwise, iterate through all of the keys in the object.
for (k in value) {
if (Object.prototype.hasOwnProperty.call(value, k)) {
v = str(k, value);
if (v) {
partial.push(quote(k) + (gap ? ': ' : ':') + v);
}
}
}
}
// Join all of the member texts together, separated with commas,
// and wrap them in braces.
v = partial.length === 0
? '{}'
: gap
? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}'
: '{' + partial.join(',') + '}';
gap = mind;
return v;
}
}
// If the JSON object does not yet have a stringify method, give it one.
if (typeof JSON.stringify !== 'function') {
escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
meta = { // table of character substitutions
'\b': '\\b',
'\t': '\\t',
'\n': '\\n',
'\f': '\\f',
'\r': '\\r',
'"' : '\\"',
'\\': '\\\\'
};
JSON.stringify = function (value, replacer, space) {
// The stringify method takes a value and an optional replacer, and an optional
// space parameter, and returns a JSON text. The replacer can be a function
// that can replace values, or an array of strings that will select the keys.
// A default replacer method can be provided. Use of the space parameter can
// produce text that is more easily readable.
var i;
gap = '';
indent = '';
// If the space parameter is a number, make an indent string containing that
// many spaces.
if (typeof space === 'number') {
for (i = 0; i < space; i += 1) {
indent += ' ';
}
// If the space parameter is a string, it will be used as the indent string.
} else if (typeof space === 'string') {
indent = space;
}
// If there is a replacer, it must be a function or an array.
// Otherwise, throw an error.
rep = replacer;
if (replacer && typeof replacer !== 'function' &&
(typeof replacer !== 'object' ||
typeof replacer.length !== 'number')) {
throw new Error('JSON.stringify');
}
// Make a fake root object containing our value under the key of ''.
// Return the result of stringifying the value.
return str('', {'': value});
};
}
// If the JSON object does not yet have a parse method, give it one.
if (typeof JSON.parse !== 'function') {
cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
JSON.parse = function (text, reviver) {
// The parse method takes a text and an optional reviver function, and returns
// a JavaScript value if the text is a valid JSON text.
var j;
function walk(holder, key) {
// The walk method is used to recursively walk the resulting structure so
// that modifications can be made.
var k, v, value = holder[key];
if (value && typeof value === 'object') {
for (k in value) {
if (Object.prototype.hasOwnProperty.call(value, k)) {
v = walk(value, k);
if (v !== undefined) {
value[k] = v;
} else {
delete value[k];
}
}
}
}
return reviver.call(holder, key, value);
}
// Parsing happens in four stages. In the first stage, we replace certain
// Unicode characters with escape sequences. JavaScript handles many characters
// incorrectly, either silently deleting them, or treating them as line endings.
text = String(text);
cx.lastIndex = 0;
if (cx.test(text)) {
text = text.replace(cx, function (a) {
return '\\u' +
('0000' + a.charCodeAt(0).toString(16)).slice(-4);
});
}
// In the second stage, we run the text against regular expressions that look
// for non-JSON patterns. We are especially concerned with '()' and 'new'
// because they can cause invocation, and '=' because it can cause mutation.
// But just to be safe, we want to reject all unexpected forms.
// We split the second stage into 4 regexp operations in order to work around
// crippling inefficiencies in IE's and Safari's regexp engines. First we
// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
// replace all simple value tokens with ']' characters. Third, we delete all
// open brackets that follow a colon or comma or that begin the text. Finally,
// we look to see that the remaining characters are only whitespace or ']' or
// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
if (/^[\],:{}\s]*$/
.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
.replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
// In the third stage we use the eval function to compile the text into a
// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
// in JavaScript: it can begin a block or an object literal. We wrap the text
// in parens to eliminate the ambiguity.
j = eval('(' + text + ')');
// In the optional fourth stage, we recursively walk the new structure, passing
// each name/value pair to a reviver function for possible transformation.
return typeof reviver === 'function'
? walk({'': j}, '')
: j;
}
// If the text is not JSON parseable, then a SyntaxError is thrown.
throw new SyntaxError('JSON.parse');
};
}
}());
---
title: WebIM 开发指南
sidebar: webimsidebar
secondnavwebim: true
---
# 快速入门
## 初始化
### 创建连接{#conn_new}
<pre class="hll"><code class="language-javascript">
var conn = new Easemob.im.Connection();
</code></pre>
### 初始化连接{#conn_init}
<pre class="hll"><code class="language-javascript">
conn.init({
https : true,//非必填,url值未设置时有效,优先采用url配置的参数。默认采用http连接,地址为‘http://im-api.easemob.com/http-bind/’,启用https时传递此值,地址为:‘https://im-api.easemob.com/http-bind/’
url : 'http://im-api.easemob.com/http-bind/',//非必填,默认聊天服务器地址,
domain : 'aa.com',//非必填,默认:‘easemob.com’
wait : '60',//非必填,连接超时,默认:60,单位seconds
onOpened : function() {
curUserId = conn.context.userId;
//查询好友列表
conn.getRoster(....);
},
onClosed : function() {
//处理登出事件
},
onTextMessage : function(message) {
/**处理文本消息,消息格式为:
{ type :'chat',//群聊为“groupchat”
from : from,
to : too,
data : { "type":"txt",
"msg":"hello from test2"
}
}
*/
handleTextMessage(message);
},
onEmotionMessage : function(message) {
/*处理表情消息,消息格式为:
{ type :'chat',//群聊为“groupchat”
from : from,
to : too,
data : [{ "type":"txt",
"msg":"hello from test2"
},
{ "type":"emotion",
"msg":"data:image/png;base64, ……"//图片的base64编码
}]
}
*/
handleEmotion(message);
},
onPictureMessage : function(message) {
/**处理图片消息,消息格式为:
{ type :'chat',//群聊为“groupchat”
from : "test1",
to : "test2",
url : "http://s1.easemob.com/weiquan2/a2/chatfiles/0c0f5f3a-e66b-11e3-8863-f1c202c2b3ae",
secret : "NSgGYPCxEeOou00jZasg9e-GqKUZGdph96EFxJ4WxW-qkxV4",
filename : "logo.png",
thumb : "http://s1.easemob.com/weiquan2/a2/chatfiles/0c0f5f3a-e66b-11e3-8863-f1c202c2b3ae",
thumb_secret : "0595b06a-ed8b-11e3-9b85-93fade9c198c",
file_length : 42394,
width : 280,
height : 160,
filetype : "image/png",
accessToken :"YWMtjPPoovCqEeOQs7myPqqaOwAAAUaqNH0a8rRj4PwJLQju6-S47ZO6wYs3Lwo"
}
*/
handlePictureMessage(message);
},
onAudioMessage : function(message) {
/**处理音频消息,消息格式为:
{ type :'chat',//群聊为“groupchat”
from : "test1",
to : "test2",
url : "http://s1.easemob.com/weiquan2/a2/chatfiles/0c0f5f3a-e66b-11e3-8863-f1c202c2b3ae",
secret :"NSgGYPCxEeOou00jZasg9e-GqKUZGdph96EFxJ4WxW-qkxV4",
filename : "风雨无阻.mp3",
length :45223,
file_length : 304,
filetype : "mp3",
accessToken :"YWMtjPPoovCqEeOQs7myPqqaOwAAAUaqNH0a8rRj4PwJLQju6-S47ZO6wYs3Lwo"
}
*/
handleAudioMessage(message);
},
//收到联系人订阅请求的回调方法
onPresence : function (message){
/**
{
from: "l2",
fromJid: "easemob-demo#chatdemoui_l2@easemob.com",
status: "下午11:44:47",
to: "test1",
toJid: "easemob-demo#chatdemoui_test1@easemob.com/13856640471403797405809685",
type: "subscribed"
}
*/
handlePresence(message);
},
//收到联系人信息的回调方法
onRoster : function (message){
/**
[{
groups: [{0: "default",
length: 1}],
jid: "easemob-demo#chatdemoui_l2@easemob.com",
name: "l2",
subscription: "to"
}]
*/
handleRoster(message);
},
onError : function(e) {
//异常处理
alert(e.msg);
}
});
</code></pre>
### 打开连接{#conn_open}
支持username/password和username/token登录两种方式,sdk中会根据传入的参数进行自动选择是否登录usergrid,获取登录成功的token后再进行登录聊天,如果使用token的打开连接将跳过登录usergird,直接登录IM服务器。
<pre class="hll"><code class="language-javascript">
//用户名
var user = $("#username").val();
//密码
var pass = $("#password").val();
if (user == '' || pass == '') {
alert("请输入用户名和密码");
return;
}
conn.open({
user : user,
pwd : pass,
appKey : 'easemob-demo#chatdemoui'//开发者APPKey
//accessToken : 'YWMt8bfZfFk5EeSiAzsQ0OXu4QAAAUpoZFOMJ66ic5m2LOZRhYUsRKZWINA06HI'
});
</code></pre>
## 单聊{#single_chat}
### 查询好友列表{#getRoster}
查询好友列表时,要注意susciption(both,to,from)为不同值得处理,此处默认both和to的为好友,开发者自定义处理,保持跟APP端处理一致即可。
<pre class="hll"><code class="language-javascript">
conn.getRoster({
success : function(roster) {
//获取好友列表,并进行好友列表渲染,roster格式为:
/** [
{
jid:"asemoemo#chatdemoui_test1@easemob.com",
name:"test1",
subscription: "both"
},
{
jid:"asemoemo#chatdemoui_test2@easemob.com",
name:"test2",
subscription: "from"
}
]
*/
for(var i in roster){
var ros = roster[i];
//ros.subscriptio值为both/to为要显示的联系人,此处与APP需保持一致,才能保证两个客户端登录后的好友列表一致
if(ros.subscription =='both' || ros.subscription=='to'){
newroster.push(ros);
}
}
if (newroster.length >=0) {
buildContactDiv("contractlist", newroster);//页面处理
if (newroster.length > 0) {
setCurrentContact(newroster[0].name);//页面处理将第一个联系人作为当前聊天div
}
}
//conn.setPresence();
},
});
</code></pre>
### 添加好友{#subscribe}
通过sdk的subscribe和unsubcribe进行添加或者删除好友操作,登录用户通过注册onPresence,监听对方的添加或者删除好友请求,并做相应的处理。
<pre class="hll"><code class="language-javascript">
//easemobwebim-sdk中收到联系人订阅请求的处理方法,具体的type值所对应的值请参考xmpp协议规范
var handlePresence = function (e){
//(发送者希望订阅接收者的出席信息),即别人申请加你为好友
if (e.type == 'subscribe') {
//若e.status中含有[resp:true],则表示为对方同意好友后反向添加自己为好友的消息,demo中发现此类消息,默认同意操作,完成双方互为好友;如果不含有[resp:true],则表示为正常的对方请求添加自己为好友的申请消息。
......
}
//(发送者允许接收者接收他们的出席信息),即别人同意你加他为好友
if (e.type == 'subscribed') {
......
}
//(发送者取消订阅另一个实体的出席信息),即删除现有好友
if (e.type == 'unsubscribe') {
.......
}
//(订阅者的请求被拒绝或以前的订阅被取消),即对方单向的删除了好友
if (e.type == 'unsubscribed') {
.......
}
};
</code></pre>
#### 申请添加对方为好友{#addFriend}
<pre class="hll"><code class="language-javascript">
//主动申请添加对方为好友
var startAddFriend = function startAddFriend(){
//对方用户账号
var user = $("addfridentId").val();
//请求添加对方为好友
conn.subscribe({
to : user,
message : "加个好友呗-" + getLoacalTimeString()
});
return;
};
var getLoacalTimeString = function getLoacalTimeString() {
var date = new Date();
var time = date.getHours() + ":" + date.getMinutes() + ":"
+ date.getSeconds();
return time;
}
</code></pre>
#### 对方收到请求,同意或者拒绝{#agreed_reject}
<pre class="hll"><code class="language-javascript">
//对方收到请求加为好友,接受请求
$('#confirm-block-footer-confirmButton').click(function() {
//同意好友请求
agreeAddFriend(e.from);//e.from用户名
//反向添加对方好友
conn.subscribe({
to : e.from,
message : "[resp:true]"
});
}
//同意
var agreeAddFriend = function agreeAddFriend(connection,who,jid){
conn.subscribed({
to : user,
message : "[resp:true]"//同意后发送反加对方为好友的消息,反加消息标识[resp:true]
});
};
//对方收到请求加为好友,拒绝请求
$('#confirm-block-footer-cancelButton').click(function() {
rejectAddFriend(e.from);//拒绝加为好友
});
//拒绝
var rejectAddFriend = function(user) {
conn.unsubscribed({
to : user,
message : getLoacalTimeString()
});
};
</code></pre>
对于好友的分组,添加好友时在addroster可以指定group属性(默认为:default组),添加好友成功后,好友列表渲染时,根据好友的group属性进行分组渲染,实现类似其他聊天工具的自定义好友分组管理的功能。
#### 删除好友{#delfriend}
取消订阅,同时将对方从自己的好友列表上删除掉。
<pre class="hll"><code class="language-javascript">
var delFriend = function(user) {
conn.removeRoster({
to : user,
groups : [ 'default' ],
success : function() {
conn.**unsubscribed**({
to : user
});
}
});
};
</code></pre>
### 发送文本(表情)聊天消息{#sendTextMessage}
<pre class="hll"><code class="language-javascript">
//发送文本消息
conn.sendTextMessage({
to : to,//用户登录名,sd根据appkey和domain组织jid,如easemob-demo#chatdemoui_**TEST**@easemob.com,中"to:TEST",下同
msg :'hello world!' //文本消息
});
//发送表情消息,调用接口同文本消息
conn.sendTextMessage({
to : to,
msg :'hello world![(*)][(#)]' //文本消息+表情
});
</code></pre>
### 发送图片消息{#sendPic}
发送图片消息sdk自动分两步完成:<br>
1)上传图片文件到服务器,并得到服务返回的图片信息等<br>
2)发送图片消息,消息体包含图片的基本信息、服务器路径、secret等,接收方初始化连接中的onPictureMessage的格式,根据图片消息内容到服务器下载图片,并进行显示
<pre class="hll"><code class="language-javascript">
function sendPic() {
//图片接收者,如“test1”
var to = curChatUserId;
if (to == null) {
alert("请选择联系人");
return;
}
//fileInputId:文件选择输入框的Id,sdk自动根据id自动获取文件对象(含图片,或者其他类型文件)
var fileObj = Easemob.im.Helper.getFileUrl(fileInputId);
if (fileObj.url == null || fileObj.url == '') {
alert("请选择发送图片");
return;
}
var filetype = fileObj.filetype;
var filename = fileObj.filename;
if (filetype in {
"jpg" : true,
"gif" : true,
"png" : true,
"bmp" : true
}) {
var opt = {
fileInputId : fileInputId,
to : to,
onFileUploadError : function(error) {
//处理图片上传失败
},
onFileUploadComplete : function(data) {
//处理图片上传成功,如本地消息显示
}
};
conn.sendPicture(opt);
return;
}
alert("不支持此图片类型" + filetype);
};
</code></pre>
### 发送音频消息{#sendAudio}
sdk处理同发送图片消息,分两步:
1. 上传音频文件到服务器,得到音频文件的信息;
2. 发送音频消息给接收方,消息体包含音频的基本信息、下载路径和secret信息等,接收方收到消息后,根据消息体内部的音频下载路径和secret路径,下载音频并进行显示。
<pre class="hll"><code class="language-javascript">
function sendAudio () {
var to = curChatUserId;
if (to == null) {
alert("请选择联系人");
return;
}
var fileObj = Easemob.im.Helper.getFileUrl(fileInputId);
if (fileObj.url == null || fileObj.url == '') {
alert("请选择发送音频");
return;
}
var filetype = fileObj.filetype;
var filename = fileObj.filename;
if (filetype in {
"mp3" : true,
"wma" : true,
"wav" : true,
"avi" : true
})
{
var opt = {
fileInputId : fileInputId,
to : to,
onFileUploadError : function(error) {
//处理上传音频失败
},
onFileUploadComplete : function(data) {
//处理上传音频成功,如本地消息提示发送成功
}
};
conn.sendAudio(opt);
return;
}
alert("不支持此音频类型" + filetype);
};
</code></pre>
### 接收消息
#### 注册接收消息 {#onmessage}
<pre class="hll"><code class="language-javascript">
conn.init({
onTextMessage : function(message) { },//收到文本消息处理动作
onEmotionMessage : function(message) { },//收到表情消息处理动作
onPictureMessage : function(message) { },//收到图片消息处理动作
onAudioMessage : function(message) { }, //收到语音消息处理动作
...
});
</code></pre>
#### 处理消息{#options}
conn.init()中注册不同消息接收handler之后,可自行解析消息体,定位聊天好友,并追加到与其聊天窗口。具体参考webim.easemob.com效果,消息体格式参见前章节:初始化连接。<br>
注:对于图片、语音消息需要先进行下载,然后进行显示或者播放处理。如下(下载图片,音频同):
<pre class="hll"><code class="language-javascript">
var handlePictureMessage = function(message) {
var filename = message.filename;//文件名称,带文件扩展名
var from = message.from;//文件的发送者
var mestype = message.type;//消息发送的类型是群组消息还是个人消息
......
...
var options = message;
// 图片消息下载成功后的处理逻辑
options.onFileDownloadComplete = function(response, xhr) {
var objectURL = window.URL.createObjectURL(response);
img = document.createElement("img");
img.onload = function(e) {
img.onload = null;
window.URL.revokeObjectURL(img.src);
};
img.onerror = function() {
img.onerror = null;
if (typeof FileReader == 'undefined') {
img.alter = "当前浏览器不支持blob方式";
return;
}
img.onerror = function() {
img.alter = "当前浏览器不支持blob方式";
};
var reader = new FileReader();
reader.onload = function(event) {
img.src = this.result;
};
reader.readAsDataURL(response);
}
img.src = objectURL;
var pic_real_width = options.width;
......
...
};
options.onFileDownloadError = function(e) {
appendMsg(from, contactDivId, e.msg + ",下载图片" + filename + "失败");
};
Easemob.im.Helper.download(options);
</code></pre>
#### 历史消息{#history_message}
sdk暂不具有缓存历史消息功能,demo中聊天窗口只能显示,当前登录后会话实时在聊天信息,不能查看历史消息,可以对登录后的聊天信息进行清除操作。
#### 新消息提示{#new_message}
sdk在收到新消息是会直接转发给登录用户,接收到消息后,demo中会在好友或者群组的后面显示红色消息数,具体样式开发者可自行处理。
## 群聊{#group_chat}
### 查询群组成员{#queryOccupants}
<pre class="hll"><code class="language-javascript">
//根据roomId查询room成员列表
var queryOccupants = function queryOccupants(roomId) {
var occupants = [];//存放成员容器
//查询获取room信息
conn.queryRoomInfo({
roomId : roomId,
success : function(occs) {
if (occs) {
for ( var i = 0; i < occs.length; i++) {
occupants.push(occs[i]);
}
}
//查询获取room成员信息
conn.queryRoomMember({
roomId : roomId,
success : function(members) {
if (members) {
for ( var i = 0; i < members.length; i++) {
occupants.push(members[i]);
}
}
}
});
}
});
};
</code></pre>
### 发送文本(表情)聊天消息{#group_sendTextMessage}
<pre class="hll"><code class="language-javascript">
//发送文本消息
conn.sendTextMessage({
to : to,
type : 'groupchat',
msg :'hello world!' //文本消息
});
//发送表情消息,调用接口同文本消息
conn.sendTextMessage({
to : to,
type : 'groupchat',
msg :'hello world![(*)][(#)]' //文本消息+表情
});
</code></pre>
### 发送图片消息{#group_sendPic}
发送图片消息sdk自动分两步完成
1. 上传图片文件
2. 发送图片消息初始化连接中的onPictureMessage的格式
<pre class="hll"><code class="language-javascript">
//发送图片消息时调用方法
var sendPic = function() {
var to = curChatUserId;
if (to == null) {
return;
}
// Easemob.im.Helper.getFileUrl为easemobwebim-sdk获取发送文件对象的方法,fileInputId为 input 标签的id值
var fileObj = Easemob.im.Helper.getFileUrl(fileInputId);
if (fileObj.url == null || fileObj.url == '') {
alert("请选择发送图片");
return;
}
var filetype = fileObj.filetype;
var filename = fileObj.filename;
if (filetype in pictype) {
document.getElementById("fileSend").disabled = true;
document.getElementById("cancelfileSend").disabled = true;
var opt = {
type:'chat',
fileInputId : fileInputId,
to : to,
onFileUploadError : function(error) {
//处理图片上传失败
},
onFileUploadComplete : function(data) {
//关闭文件选择窗口
$('#fileModal').modal('hide');
//本地缩略图
var file = document.getElementById(fileInputId);
if (file && file.files) {
var objUrl = getObjectURL(file.files[0]);
if (objUrl) {
var img = document.createElement("img");
img.src = objUrl;
img.width = maxWidth;
}
}
}
};
//判断是否为群组标识
if (curChatUserId.indexOf(groupFlagMark) >= 0) {
opt.type = 'groupchat';//群组标识符
opt.to = curRoomId;
}
conn.sendPicture(opt);
return;
}
alert("不支持此图片类型" + filetype);
};
</code></pre>
### 发送音频消息{#group_sendAudio}
sdk处理同群发送图片消息,分两步
1. 上传音频
2. 发送消息
<pre class="hll"><code class="language-javascript">
//发送音频消息时调用的方法
var sendAudio = function() {
var to = curChatUserId;
if (to == null) {
alert("请选择联系人");
return;
}
//利用easemobwebim-sdk提供的方法来构造一个file对象
var fileObj = Easemob.im.Helper.getFileUrl(fileInputId);
if (fileObj.url == null || fileObj.url == '') {
alert("请选择发送音频");
return;
}
var filetype = fileObj.filetype;
var filename = fileObj.filename;
if (filetype in audtype) {
document.getElementById("fileSend").disabled = true;
document.getElementById("cancelfileSend").disabled = true;
var opt = {
type:"chat",
fileInputId : fileInputId,
to : to,//发给谁
onFileUploadError : function(error) {
//处理上传音频失败
},
onFileUploadComplete : function(data) {
//处理上传音频成功,如本地消息提示发送成功
}
};
//构造完opt对象后调用easemobwebim-sdk中发送音频的方法
if (curChatUserId.indexOf(groupFlagMark) >= 0) {
opt.type = 'groupchat';
opt.to = curRoomId;
}
conn.sendAudio(opt);
return;
}
alert("不支持此音频类型" + filetype);
};
</code></pre>
### 接收及处理消息{#messageType}
群聊接收及处理消息同单聊,消息体与单聊消息根据message的type进行区分,单聊为:“chat”,群聊为:“groupchat”。根据消息的类型进行不同处理即可。
## 退出{#quit}
### 关闭连接{#conn_close}
//sdk关闭连接并处理连接状态为CLOSED
<pre class="hll"><code class="language-javascript">
conn.close();
</code></pre>
## 工具类说明{#sdk_tools}
### 表情工具类{#emotion}
<pre class="hll"><code class="language-javascript">
//返回表情JSON object,格式为:
{
"[):]" : "data:image/png;base64,iVBORw0K....==",
"[:D]" : "data:image/png;base64,iVBORw0KGgoAAAANSUh....=="
}
var emotion_json = Easemob.im.Helper.EmotionPicData;
</code></pre>
### Base64工具类{#base64}
<pre class="hll"><code class="language-javascript">
var base64 = Easemob.im.Helper.Base64;
var srcstr="ssss";
var base64str = base64.encode(srcstr);
var orgstr = base64.decode(srcstr);
</code></pre>
### 文件上传工具类{#fileupload}
<pre class="hll"><code class="language-javascript">
//是否能上传file
var canupload = Easemob.im.Helper.isCanUploadFile;
//是否能下载file
var candownload = Easemob.im.Helper.isCanDownLoadFile ;
//是否设置header
var hasheader = Easemob.im.Helper.hasSetRequestHeader;
//是否设置mimetype
var hasmimetype = Easemob.im.Helper.hasOverrideMimeType;
</code></pre>
### 表情解析工具类{#handleMotion}
<pre class="hll"><code class="language-javascript">
//返回表情JSON,格式为:
{
isemotion:true;
body:[{
type:txt,
msg:ssss
},
{
type:emotion,
msg:imgdata
}]
}
var emotionMsg = Easemob.im.Helper.parseTextMessage(message);
</code></pre>
### 文件上传工具类{#fileupdate}
<pre class="hll"><code class="language-javascript">
//返回fileinfo对象,格式为:
{
url : '',
filename : '',
filetype : ''
}
var fileInfo = Easemob.im.Helper.getFileUrl(fileInputId);
//上传
var options={
appName = 'chatdemoui',
orgName = 'easemob-demo',
accessToken = 'YWMtjPPoovCqEeOQs7myPqqaOwAAAUaqNH0a8rRj4PwJLQju6-S47ZO6wYs3Lwo',
onFileUploadComplete:function(data){//upload file success },
onFileUploadError:function(e){//upload file error },
width:100,//only for pic
heght:100//only for pic
}
Easemob.im.Helper.upload(options);
//下载
var options = {
method:'GET',//default GET
responseType:'blob',//default blob
mimeType:'text/plain; charset=x-user-defined',//default
url:'http://s1.easemob.com/weiquan2/a2/chatfiles/0c0f5f3a-e66b-11e3-8863-f1c202c2b3ae',
secret = 'NSgGYPCxEeOou00jZasg9e-GqKUZGdph96EFxJ4WxW-qkxV4',
accessToken = 'YWMtjPPoovCqEeOQs7myPqqaOwAAAUaqNH0a8rRj4PwJLQju6-S47ZO6wYs3Lwo',
onFileUploadComplete:function(data){//upload file success },
onFileUploadError:function(e){//upload file error },
}
Easemob.im.Helper.download(options);
//文件大小
var options={
fileInputId:'uploadfileinput'//文件输入框id
};
var fileSize = getFileSize(options.fileInputId);;
</code></pre>
### 发送Ajax请求{#ajaxresquest}
<pre class="hll"><code class="language-javascript">
var options = {
dataType:'text',//default
success:function(){//handle request success},
error :function(){//handle request error},
type : 'post',//default 'post'
url : 'http://s1.easemob.com/weiquan2/a2/chatfiles/0c0f5f3a-e66b-11e3-8863-f1c202c2b3ae',
headers:'',//default {}
data : '';//default null
};
Easemob.im.Helper.xhr(options);
</code></pre>
### 登录{#sdk_login}
<pre class="hll"><code class="language-javascript">
var options = {
appKey:'easemob-demo#chatdemoui',//default ''
success:function(data){ //login success },//default emptyFn
error : cunction(error){ //login error }, //default emptyFn
user : 'test1', //default ''
pwd : '123456' //default ''
};
Easemob.im.Helper.login2UserGrid(options);
</code></pre>
### 注册{#sdk_regist}
<pre class="hll"><code class="language-javascript">
vvar options = {
username : 'zjj8',
password : '123456',
appKey : 'easemob-demo#chatdemoui',
success : function(result) {
//注册成功
},
error : function(e) {
//注册失败
}
};
Easemob.im.Helper.registerUser(options);
</code></pre>
### 内置空函数{#null_function}
当所有需要回调的地方接受到函数时,默认采用此函数
<pre class="hll"><code class="language-javascript">
var emptyFn = function() {};
</code></pre>
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -358,7 +358,7 @@
chat(聊天窗口)
</a>
</li>
<li class="mui-table-view-cell">
<li id='feedback' class="mui-table-view-cell">
<a class="mui-navigate-right" href="examples/feedback.html">
feedback(问题反馈)
</a>
......@@ -421,7 +421,8 @@
}
//Android平台暂时使用slide-in-right动画
if(mui.os.android&&parseFloat(mui.os.version)<4.4){
aniShow = "slide-in-right"
aniShow = "slide-in-right";
document.getElementById('feedback').style.display = 'none';
}
}
//初始化,并预加载webview模式的选项卡
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -134,6 +134,7 @@
self.gotoItem((e.detail.tabNumber || 0), self.options.bounceTime);
},
_handleIndicatorTap: function(event) {
var self = this;
var target = event.target;
if (target.classList.contains(CLASS_ACTION_PREVIOUS) || target.classList.contains(CLASS_ACTION_NEXT)) {
self[target.classList.contains(CLASS_ACTION_PREVIOUS) ? 'prevItem' : 'nextItem']();
......
(function($, window) {
var CLASS_SLIDER = $.className('slider');
var CLASS_SLIDER_GROUP = $.className('slider-group');
var CLASS_SLIDER_LOOP = $.className('slider-loop');
var CLASS_SLIDER_INDICATOR = $.className('slider-indicator');
var CLASS_ACTION_PREVIOUS = $.className('action-previous');
var CLASS_ACTION_NEXT = $.className('action-next');
var CLASS_SLIDER_ITEM = $.className('slider-item');
var CLASS_ACTIVE = $.className('active');
var SELECTOR_SLIDER_ITEM = '.' + CLASS_SLIDER_ITEM;
var SELECTOR_SLIDER_INDICATOR = '.' + CLASS_SLIDER_INDICATOR;
var SELECTOR_SLIDER_PROGRESS_BAR = $.classSelector('.slider-progress-bar');
var Slider = $.Scroll.extend({
init: function(element, options) {
this._super(element, $.extend(true, {
interval: 0, //设置为0,则不定时轮播
scrollY: false,
scrollX: true,
indicators: false,
bounceTime: 200,
startX: false
}, options));
if (this.options.startX) {
$.trigger(this.wrapper, 'scrollend', this);
}
},
_init: function() {
var scrollers = this.wrapper.querySelectorAll('.' + CLASS_SLIDER_GROUP);
for (var i = 0, len = scrollers.length; i < len; i++) {
if (scrollers[i].parentNode === this.wrapper) {
this.scroller = scrollers[i];
break;
}
}
if (this.scroller) {
this.scrollerStyle = this.scroller.style;
this.progressBar = this.wrapper.querySelector(SELECTOR_SLIDER_PROGRESS_BAR);
if (this.progressBar) {
this.progressBarWidth = this.progressBar.offsetWidth;
this.progressBarStyle = this.progressBar.style;
}
//忘记这个代码是干什么的了?
// this.x = this._getScroll();
// if (this.options.startX === false) {
// this.options.startX = this.x;
// }
//根据active修正startX
this._super();
this._initTimer();
}
},
_initEvent: function() {
var self = this;
self._super();
self.wrapper.addEventListener('swiperight', $.stopPropagation);
self.wrapper.addEventListener('scrollend', function() {
self.isInTransition = false;
var oldSlideNumber = self.slideNumber;
self.slideNumber = self._getSlideNumber();
var slideNumber = self.slideNumber;
if (self.loop) {
if (self.slideNumber === 0) {
self.slideNumber = self.itemLength - 2;
self.setTranslate(-self.wrapperWidth * (self.itemLength - 2), 0);
} else if (self.slideNumber === (self.itemLength - 1)) {
self.slideNumber = 1;
self.setTranslate(-self.wrapperWidth, 0);
}
slideNumber = self.slideNumber - 1;
}
self.slideNumber = slideNumber;
if (oldSlideNumber !== self.slideNumber) {
$.trigger(self.wrapper, 'slide', {
slideNumber: slideNumber
});
}
});
self.wrapper.addEventListener('slide', function(e) {
if (e.target !== self.wrapper) {
return;
}
var detail = e.detail;
detail.slideNumber = detail.slideNumber || 0;
var items = self.wrapper.querySelectorAll(SELECTOR_SLIDER_ITEM);
var _slideNumber = detail.slideNumber;
if (self.loop) {
_slideNumber += 1;
}
for (var i = 0, len = items.length; i < len; i++) {
var item = items[i];
if (item.parentNode === self.scroller) {
if (i === _slideNumber) {
item.classList.add(CLASS_ACTIVE);
} else {
item.classList.remove(CLASS_ACTIVE);
}
}
}
if (self.wrapper.classList.contains($.className('segmented-control'))) { //segmented and slider
var controlItem = self.scroller.querySelector('.' + CLASS_ACTIVE + '.' + CLASS_SLIDER_ITEM + ' .' + $.className('control-item'));
if (controlItem) {
$.trigger(controlItem, 'touchstart'); //targets实现机制太麻烦,后续必须重构
$.trigger(controlItem, 'tap');
}
}
var indicatorWrap = self.wrapper.querySelector($.classSelector('.slider-indicator'));
if (indicatorWrap) {
// if (indicatorWrap.classList.contains(CLASS_SLIDER)) { //indicator is a slider
// var indicatorSliderItems = indicatorWrap.querySelectorAll(CLASS_SLIDER_ITEM);
// Math.ceil(self.itemLength / indicatorSliderItems.length);
// }
var indicators = indicatorWrap.querySelectorAll($.classSelector('.indicator'));
if (indicators.length > 0) { //图片轮播
for (var i = 0, len = indicators.length; i < len; i++) {
indicators[i].classList[i === detail.slideNumber ? 'add' : 'remove'](CLASS_ACTIVE);
}
} else {
var number = indicatorWrap.querySelector($.classSelector('.number span'));
if (number) { //图文表格
number.innerText = (detail.slideNumber + 1);
} else { //segmented controls
var controlItems = self.wrapper.querySelectorAll($.classSelector('.control-item'));
for (var i = 0, len = controlItems.length; i < len; i++) {
controlItems[i].classList[i === detail.slideNumber ? 'add' : 'remove'](CLASS_ACTIVE);
}
}
}
}
e.stopPropagation();
});
self.wrapper.addEventListener($.eventName('shown', 'tab'), function(e) { //tab
console.log('e.detail.tabNumber:::' + e.detail.tabNumber);
self.gotoItem((e.detail.tabNumber || 0), self.options.bounceTime);
});
//indicator
var indicator = self.wrapper.querySelector(SELECTOR_SLIDER_INDICATOR);
if (indicator) {
indicator.addEventListener('tap', function(event) {
var target = event.target;
if (target.classList.contains(CLASS_ACTION_PREVIOUS) || target.classList.contains(CLASS_ACTION_NEXT)) {
self[target.classList.contains(CLASS_ACTION_PREVIOUS) ? 'prevItem' : 'nextItem']();
event.stopPropagation();
}
});
}
},
_drag: function(e) {
this._super(e);
var direction = e.detail.direction;
if (direction === 'left' || direction === 'right') {
e.stopPropagation();
}
},
_initTimer: function() {
var self = this;
var slider = self.wrapper;
var interval = self.options.interval;
var slidershowTimer = slider.getAttribute('data-slidershowTimer');
slidershowTimer && window.clearTimeout(slidershowTimer);
if (interval) {
slidershowTimer = window.setTimeout(function() {
if (!slider) {
return;
}
//仅slider显示状态进行自动轮播
if (!!(slider.offsetWidth || slider.offsetHeight)) {
self.nextItem(true);
//下一个
}
self._initTimer();
}, interval);
slider.setAttribute('data-slidershowTimer', slidershowTimer);
}
},
_reLayout: function() {
this.hasHorizontalScroll = true;
this.loop = this.scroller.classList.contains(CLASS_SLIDER_LOOP);
//以防slider类嵌套使用
var items = this.scroller.querySelectorAll(SELECTOR_SLIDER_ITEM);
this.itemLength = 0;
var current = 0;
for (var i = 0, len = items.length; i < len; i++) {
if (items[i].parentNode === this.scroller) {
if (items[i].classList.contains(CLASS_ACTIVE)) {
current = this.itemLength;
}
this.itemLength++;
}
}
current = current === 0 ? (this.loop ? 1 : 0) : current;
//根据active修正startX
this.options.startX = current ? -this.scrollerWidth * current : 0;
this.scrollerWidth = this.itemLength * this.scrollerWidth;
this.maxScrollX = Math.min(this.wrapperWidth - this.scrollerWidth, 0);
this.slideNumber = this._getSlideNumber();
this._super();
},
_getScroll: function() {
var result = $.parseTranslateMatrix($.getStyles(this.scroller, 'webkitTransform'));
return result ? result.x : 0;
},
_getSlideNumber: function() {
return Math.abs(Math.round(Math.abs(this.x) / this.wrapperWidth));
},
_transitionEnd: function(e) {
if (e.target !== this.scroller || !this.isInTransition) {
return;
}
this._transitionTime();
this.isInTransition = false;
$.trigger(this.wrapper, 'scrollend', this);
},
_flick: function(e) {
var detail = e.detail;
var direction = detail.direction;
this._clearRequestAnimationFrame();
this.isInTransition = true;
if (direction === 'up' || direction === 'down') {
this.resetPosition(this.options.bounceTime);
return;
}
if (e.type === 'flick') {
if (detail.touchTime < 200) { //flick,太容易触发,额外校验一下touchtime
this.x = -(this.slideNumber + (direction === 'left' ? 1 : -1)) * this.wrapperWidth;
}
this.resetPosition(this.options.bounceTime);
} else if (e.type === 'dragend' && !detail.flick) {
this.resetPosition(this.options.bounceTime);
}
e.stopPropagation();
},
_gotoItem: function(slideNumber, time) {
this.scrollTo(-slideNumber * this.wrapperWidth, 0, time, this.options.bounceEasing);
if (time === 0) {
$.trigger(this.wrapper, 'scrollend', this);
}
this._initTimer();
},
_fixedSlideNumber: function(slideNumber) {
if (!this.loop) {
if (slideNumber < 0) {
slideNumber = 0;
} else if (slideNumber >= this.itemLength) {
slideNumber = this.itemLength - 1;
}
}
return slideNumber;
},
//API
setTranslate: function(x, y) {
this._super(x, y);
var progressBar = this.progressBar;
if (progressBar) {
this.progressBarStyle.webkitTransform = 'translate3d(' + (-x * (this.progressBarWidth / this.wrapperWidth)) + 'px,0,0)';
}
},
resetPosition: function(time) {
time = time || 0;
if (this.x > 0) {
this.x = 0;
} else if (this.x < this.maxScrollX) {
this.x = this.maxScrollX;
}
this._gotoItem(this._getSlideNumber(), time);
return true;
},
gotoItem: function(slideNumber, time) {
this._gotoItem(this._fixedSlideNumber(this.loop ? (slideNumber + 1) : slideNumber), time || this.options.bounceEasing);
},
nextItem: function(auto) {
var slideNumber = this._fixedSlideNumber(this.slideNumber + 1);
var bounceTime = this.options.bounceTime;
if (auto && !this.loop) {
if (this.slideNumber + 1 >= this.itemLength) {
bounceTime = slideNumber = 0;
}
}
this._gotoItem(slideNumber, bounceTime);
// if (!auto) { //TODO 这个设置后续还得仔细过一遍
// this.isInTransition = false;
// }
},
prevItem: function() {
this._gotoItem(this._fixedSlideNumber(this.slideNumber - 1), this.options.bounceTime);
},
refresh: function(options) {
if (options) {
$.extend(this.options, options);
this._super();
this._gotoItem(this._getSlideNumber() + 1, this.options.bounceTime);
} else {
this._super();
}
}
});
$.fn.slider = function(options) {
var slider = null;
this.each(function() {
var sliderElement = this;
if (!this.classList.contains(CLASS_SLIDER)) {
sliderElement = this.querySelector('.' + CLASS_SLIDER);
}
if (sliderElement) {
var id = sliderElement.getAttribute('data-slider');
if (!id) {
id = ++$.uuid;
$.data[id] = slider = new Slider(sliderElement, options);
sliderElement.setAttribute('data-slider', id);
} else {
slider = $.data[id];
if (slider && options) {
slider.refresh(options);
}
}
}
});
return slider;
};
$.ready(function() {
// setTimeout(function() {
$($.classSelector('.slider')).slider();
// }, 500); //临时处理slider宽度计算不正确的问题(初步确认是scrollbar导致的)
});
})(mui, window);
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment