jQuery與CSS二級下拉選單

antzone發表於2018-07-14

本章節介紹一段程式碼例項,它實現點選出現二級下拉選單的效果。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
body, h1, h2, h3, h4, h5, h6, p, ol, ul, li, dl, dt, dd{
  padding:0;
  margin:0;
}
li{list-style: none;}
img{border: none;}
u{text-decoration:none;}
em{font-style: normal;}
a{
  color:#424242;
  text-decoration:none;
  outline:none;
  blr:expression(this.onFocus=this.blur());
}
body{
  font-size:12px;
  word-break:break-all;
}
.box{
  margin:0 auto;
  text-align:left;
  width:920px;
}
.clear{clear:both;}
.UpLayer{margin:100px;}
.UpLayer dl dt{
  width:50px;
  position:absolute;
  z-index:3;
  padding:0 5px;
  line-height:20px;
}
.UpLayer02{
  border:#ccc 1px solid;
  border-bottom:none;
  background:#f1f1f1;
  margin:-1px 0 0 -1px;
}
.UpLayer dl dd{
  width:80px;
  position:absolute;
  z-index:2;
  border:#ccc 1px solid;
  padding:5px;
  line-height:20px;
  background:#f1f1f1;
  display:none;
  margin:19px 0 0 -1px;
}
.UpLayer dl dd a{
  display:block;
  border-bottom: #ccc 1px dashed;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script>
$(document).ready(function(){ 
  var objStr = ".UpLayer"; 
  $(objStr).each(function(index){ 
    $(this).click(function(){ 
      $(objStr+" dd").show(); 
      $(objStr+" dt").addClass("UpLayer02"); 
    }); 
    $(this).hover(function(){},function(){ 
      $(objStr+" dd").hide(); 
      $(objStr+" dt").removeClass("UpLayer02"); 
    });  
  }); 
}); 
</script>
</head>
<body>
<div class="UpLayer">
  <dl>
    <dt><a href="javascript:void(0)">螞蟻部落</a></dt>
    <dd> 
      <a href="#">css教程</a> 
      <a href="#">softwhy.com</a> 
      <a href="#">div教程</a> 
      <a href="#">js教程</a> 
      <a href="#">正則教程</a>
    </dd>
  </dl>
</div>
</body>
</html>

上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。

一.程式碼註釋:

(1).$(document).ready(function(){}),當文件結構完全再去執行函式中的程式碼、

(2).var objStr = ".UpLayer",宣告一個變數並賦值,這個值用作一個class選擇器。

(3).$(objStr).each(function(index){ }),使用each()方法遍歷匹配集合中的元素。

(4).$(this).click(function(){ },為當前元素元素註冊click事件處理函式。

(5).$(objStr+" dd").show(),顯示class屬性值為UpLayer下的dd元素。

(6).$(objStr+" dt").addClass("UpLayer02"),為class屬性值為UpLayer下的dt元素新增UpLayer02樣式類。

(7).$(this).hover(function(){},function(){ 

  $(objStr+" dd").hide(); 

  $(objStr+" dt").removeClass("UpLayer02"); 

}),當滑鼠離開的時候,隱藏dd元素,刪除相應的樣式類。

二.相關閱讀:

(1).each()參閱jQuery each()一章節。

(2).addClass()參閱jQuery addClass()一章節。

(3).removeClass()參閱jQuery removeClass()一章節。

相關文章