Jquery实现仿京东商城省市联动菜单

前端技术 2023/09/02 JavaScript

本文实例讲述了Jquery实现仿京东商城省市联动菜单的简单实例代码。分享给大家供大家参考。具体如下:
运行效果截图如下:

具体代码如下:

<!doctype html>
<html lang=\"en\">
<head>
 <meta charset=\"UTF-8\">
 <title>Document</title>
 <link rel=\"stylesheet\" href=\"assets/css/bootstrap.min.css\">
 <link rel=\"stylesheet\" href=\"css/custom-theme/jquery-ui-1.10.0.custom.css\">
 <style>
 .region li{
  float: left;
  width: 15%;
  list-style: none;
  line-height: 30px;
  padding: 2px 15px;
  white-space: nowrap;
  }
 .region li a{
  text-decoration:none;
  font-size:14px;
 }
 .region li a:hover{
  background-color: #5bb75b;
 }
 </style>
</head>
<body>

 <input type=\"text\" id=\"address\" class=\"address\">
 
 <div id=\"addressInfo\" style=\"display: none;position: absolute;background-color: ffffff;border: 1px solid #aaaaaa;width:400px;\">
 <div class=\"selectAddress area\">
  <ul>
  <li><a href=\"#tabs-1\">省份</a></li>
  </ul>
  <div id=\"tabs-1\" class=\"region\">
  <ul>
   
  </ul>
  </div>
 </div>
 </div>
 
 
 <script src=\"assets/js/jquery-1.9.0.min.js\"></script>
 <script src=\"assets/js/jquery-ui-1.10.0.custom.min.js\"></script>
 <script>
 $(function(){
 
  var provinces = [\'北京\', \'天津\', \'山东\', \'河南\', \'河北\', \'山西\', \'湖北\', \'湖南\', \'江西\', \'浙江\', \'上海\', \'安徽\', \'广东\', \'广西\', \'福建\', \'宁夏\', \'重庆\', \'四川\', \'西藏\', \'海南\', \'香港\', \'澳门\', \'内蒙古\', \'陕西\', \'甘肃\', \'黑龙江\', \'辽宁\', \'吉林\'];
  var city = [\'广州\', \'深圳\', \'东莞\'];
  var county = [\'宝安\', \'南山\', \'福田\', \'罗湖\'];
  
  $(\'.address\').bind(\'focus\', function(){
  var $this = $(this);
  $(\'#addressInfo\').css({
   top: $this.offset().top + $this.outerHeight(),
   left : $this.offset().left
  }).show();
  });
  
  var $provinces_li = $(\'.region>ul\');
  $.each(provinces, function(e){
  $provinces_li.append(\'<li><a href=\"javascript:void(0);\" class=\"provinces\">\'+this+\'</a></li>\');
  });
  
  var i = 0;
  
  $(\'.area\')
  .tabs()
  .on(\'click\', \'.provinces\', function(){
   //获取当前对象
   var $this = $(this),
   $tabs = $this.parents(\'.selectAddress\'), //追加DIV
   $div = $(\'<div id=\"tabs-2\"></div>\'),
   $ul = $(\'<ul></ul>\'); //追加ul
   
   $tabs.children(\':eq(0)\').children(\':gt(0)\').remove();
   $tabs.children(\'div:gt(0)\').remove();
   
   //each遍历,赋值
   //最好是这样,code、name $ul.append(\'<li><a href=\"javascript:void(0);\" class=\"city\">\'+this.name+\'</a><input type=\"hidden\" value=\"\'+this.code+\'\"/></li>\');
   
   $.each(city, function(){
   $ul.append(\'<li><a href=\"javascript:void(0);\" class=\"city\">\'+this+\'</a></li>\');
   });
   
   $tabs.children(\'ul\').append(\'<li><a href=\"#tabs-2\">市区</a></li>\');
   $tabs.append($div.addClass(\'region\').append($ul));
   $tabs
   .tabs( \"refresh\" )
   .tabs(\'option\', \'active\', 1)
   .data(\'address\', $this.text());
  })
  .on(\'click\', \'.city\', function(){
   var $this = $(this),
   $tabs = $this.parents(\'.selectAddress\'),
   $div = $(\'<div id=\"tabs-3\"></div>\'),
   $ul = $(\'<ul></ul>\');
   
   $tabs.children(\'ul\').children(\':eq(2)\').remove();
   $tabs.children(\'div:eq(2)\').remove();
   
   i++; 
   if(i == 1){  //判断是否有下级
   $.each(county, function(){
    $ul.append(\'<li><a href=\"javascript:void(0);\" class=\"county\">\'+this+\'</a></li>\');
   });
   
   $tabs.children(\'ul\').append(\'<li><a href=\"#tabs-3\">县区</a></li>\');
   $tabs.append($div.addClass(\'region\').append($ul));
   $tabs
    .tabs( \"refresh\" )
    .tabs(\'option\', \'active\', 2)
    .data(\'address\', $tabs.data(\'address\')+\'/\'+$this.text());
   }else{
   //获取值并赋值至文本框中
   $(\'.address\').val($tabs.data(\'address\')+\'/\'+$this.text());
   $tabs.parent().hide();
   }
  })
  .on(\'click\', \'.county\', function(){
   var $this = $(this),
   $tabs = $this.parents(\'.selectAddress\');
   
   $(\'.address\').val($tabs.data(\'address\')+\'/\'+$this.text());
   $tabs.parent().hide();
  })
  ;
  
  
  $(document).bind(\'click\', function(e){
  var $target = $(e.target),
   addressInfo = $(\'#addressInfo\');
  if(!$target.hasClass(\'selectAddress\') 
   && $target.parents(\'.selectAddress\').size() == 0 
   && !$target.is($(\'.address\'))
   && addressInfo.is(\':visible\')){
   $(\'#addressInfo\').hide();
  }
  });
 })
 </script>
</body>
</html>

源码下载: 《Jquery实现仿京东商城省市联动菜单》

希望本文所述对大家学习javascript程序设计有所帮助。

本文地址:https://www.stayed.cn/item/5210

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。