AngularJS實(shí)現(xiàn)的省市二級(jí)聯(lián)動(dòng)功能示例【可對(duì)選項(xiàng)實(shí)現(xiàn)增刪】
本文實(shí)例講述了AngularJS實(shí)現(xiàn)的省市二級(jí)聯(lián)動(dòng)功能。分享給大家供大家參考,具體如下:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>www.dbjr.com.cn 省市二級(jí)聯(lián)動(dòng)</title> </head> <style> *{ margin:0; padding:0; } .ul{ list-style:none; display:inline-block; } .selectOption ul li{ display:inline-block; width:50px; padding:5px; } ul li:hover{ background-color:#59C0F3; color:#fff; cursor:pointer; } .container{ display:inline-block; } dl{ display: inline-block; } dl dt{ display: inline-block; } .container{ position:relative; text-align: left; vertical-align:top; } .selectBoder{ width:150px; height:20px; margin:0 auto; margin-bottom:5px; cursor:pointer; border:1px solid #808080; padding:2px 5px; font-size:14px; } .selectBoder:hover{ border-color:#59C0F3; } .selectOption:before{ width: 0; height: 0; border-bottom: 50px solid #ffffff; border-left: 50px solid transparent; border-right: 50px solid transparent; } .selectOption{ font-size:14px; position:absolute; background-color: #ffffff; z-index:9999; border:1px solid #eee; width:360px; padding:3px 5px; box-shadow: 5px 5px 10px #888888; } .button{ width:30px; height:30px; display: inline-block; background-color:#59C0F3; text-align:center; line-height: 25px; cursor:pointer; font-size:24px; color:#fff; margin:0 5px; border-radius:30px; } .button:hover{ background-color:#12bb16; } </style> <body ng-app="myApp" ng-controller="myControl"> <div class="inline" ng-repeat = "option in options"> <div class="container"> <dl> <dd class="selectBoder" ng-click="choseP($index)" ng-value="false">{{option.province}}</dd> <dt class="selectOption" ng-if="option.ifShowProvince" ng-mouseleave="leaveProvince(option)"> <ul> <li ng-repeat = " x in province" ng-value="x.value" ng-click="choseProvince($event.target,option)" data-name="{{x.name}}">{{x.name}}</li> </ul> </dt> </dl> </div> <div class="container"> <dl> <dd class="selectBoder" ng-click="choseC($index)" ng-value="false">{{option.city}}</dd> <dt class="selectOption" ng-if="option.ifShowCity" ng-mouseleave="leaveCity(option)"> <ul> <li ng-repeat = "y in option.cities" ng-value="y.value" ng-click="choseCity($event.target,option)" data-name="{{y.name}}">{{y.name}}</li> </ul> </dt> </dl> </div> <span class="button" ng-click="addChose($index)">+</span> <span class="button" ng-click="deleteChose($index)">-</span> </div> </div> </body> <script type="text/javascript" src="../js/jquery-1.8.3.js"></script> <script type="text/javascript" src="../js/angular.min.js"></script> <script type="text/javascript"> var app = angular.module('myApp',[]); app.controller('myControl',function($scope){ $scope.ifShowCity = false; $scope.ifShowProvince = false; $scope.options =[{index:"0",ifShowCity:false,ifShowProvince:false,province:"",city:"",cities:""}]; $scope.leaveProvince = function(option){ $.each($scope.options,function(index,item){ if(option == $scope.options[index]){ $scope.optionIndex = index; } }) $scope.options[$scope.optionIndex].ifShowProvince = false; } $scope.leaveCity = function(option){ $.each($scope.options,function(index,item){ if(option == $scope.options[index]){ $scope.optionIndex = index; } }) $scope.options[$scope.optionIndex].ifShowCity = false; } $scope.choseProvince = function(target,option){ $.each($scope.options,function(index,item){ if(option == $scope.options[index]){ $scope.optionIndex = index; } }) $scope.options[$scope.optionIndex].ifShowProvince = false; $scope.options[$scope.optionIndex].province = target.getAttribute("data-name"); $.each($scope.province,function(index,item){ if(item.value == target.getAttribute("value")){ $scope.options[$scope.optionIndex].cities = item.children; } } ) } $scope.choseCity = function(target,option){ $.each($scope.options,function(index,item){ if(option == $scope.options[index]){ $scope.optionIndex = index; } }) $scope.options[$scope.optionIndex].ifShowCity = false; $scope.options[$scope.optionIndex].city = target.getAttribute("data-name"); } function getPrarms(){ return $scope.options; } $scope.sub = function(){ getPrarms(); } $scope.province = [{ name: "湖北省", value: "01", children: [{ name: "武漢", value: "0101" }, { name: "黃岡", value: "0102" }, { name: "荊州", value: "0103" }, { name: "十堰", value: "0104" }, { name: "黃石", value: "0105" }, { name: "鄂州", value: "0106" }, { name: "咸寧市", value: "0107" }, { name: "襄陽市", value: "0108" } ] },{ name: "廣東省", value: "02", children: [{ name: "廣東", value: "0201" }, { name: "深圳", value: "0202" }, { name: "佛山", value: "0203" }, { name: "惠州", value: "0204" }, { name: "東莞", value: "0205" }] },{ name: "河北省", value: "03", children: [{ name: "北京", value: "0301" }, { name: "邯鄲", value: "0302" }, { name: "邢臺(tái)", value: "0303" }, { name: "保定", value: "0304" }, { name: "秦皇島", value: "0305" } ]} ] $scope.choseP = function($index){ $scope.options[$index].ifShowProvince = !$scope.options[$index].ifShowProvince; $scope.options[$index].ifShowCity = false; } $scope.choseC = function($index){ $scope.options[$index].ifShowCity = !$scope.options[$index].ifShowCity; $scope.options[$index].ifShowProvince = false; } $scope.addChose = function($index){ if($scope.options.length < 10){ $scope.options.splice($scope.options.length,0,{ //從最后面添加內(nèi)容 index:$scope.options.length,ifShowCity:false,ifShowProvince:false }); $scope.canDelete = true; }else{ $scope.canAdd = false; } } $scope.deleteChose = function($index){ if($scope.options.length >1){ $scope.options.splice($index,1); //從當(dāng)前行刪除。 } if($index == 1){ $scope.canDelete = false; } } }); </script> </html>
更多關(guān)于AngularJS相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《AngularJS指令操作技巧總結(jié)》、《AngularJS入門與進(jìn)階教程》及《AngularJS MVC架構(gòu)總結(jié)》
希望本文所述對(duì)大家AngularJS程序設(shè)計(jì)有所幫助。
相關(guān)文章
Angular重構(gòu)數(shù)組字段的解決方法示例
這篇文章主要為大家介紹了Angular重構(gòu)數(shù)組字段的解決方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09Angular 2父子組件數(shù)據(jù)傳遞之@Input和@Output詳解 (上)
這篇文章主要給大家介紹了關(guān)于Angular 2父子組件數(shù)據(jù)傳遞之@Input和@Output的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來看看吧。2017-07-07詳解angular分頁插件tm.pagination二次觸發(fā)問題解決方案
這篇文章主要介紹了詳解angular分頁插件tm.pagination二次觸發(fā)問題解決方案,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07解決angularJS中input標(biāo)簽的ng-change事件無效問題
今天小編就為大家分享一篇解決angularJS中input標(biāo)簽的ng-change事件無效問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09Angular應(yīng)用Bootstrap過程步驟邏輯詳解
這篇文章主要為大家介紹了Angular應(yīng)用Bootstrap過程步驟邏輯詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07es6+angular1.X+webpack 實(shí)現(xiàn)按路由功能打包項(xiàng)目的示例
本篇文章主要介紹了es6+angular1.X+webpack 實(shí)現(xiàn)按路由功能打包項(xiàng)目的示例,具有一定的參考價(jià)值,有需要的可以了解一下2017-08-08AngularJS中的Promise詳細(xì)介紹及實(shí)例代碼
這篇文章主要介紹了AngularJS中的Promise詳細(xì)介紹及實(shí)例代碼的相關(guān)資料,Promise是一種模式,以同步操作的流程形式來操作異步事件,避免了層層嵌套,可以鏈?zhǔn)讲僮鳟惒绞录枰呐笥芽梢詤⒖枷?/div> 2016-12-12Angularjs 創(chuàng)建可復(fù)用組件實(shí)例代碼
這篇文章主要介紹了Angularjs 創(chuàng)建可復(fù)用組件實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-10-10最新評(píng)論