jquery下拉菜单效果学习

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
<title>jquery</title>

<style type="text/css">
ul{
float:left


}
li{
list-style-type:none;
}
ul ul li{


}
</style>
<script src="jquery-1.4.3.js" type="text/javascript"></script>
<script type="text/javascript">

$(document).ready(function(){ 
    $("ul li").next("ul").hide();
	
    $("ul li").mouseover(function()
    {
     $(this).next("ul").slideDown();
    });
	
	 $("ul ul").mouseleave(function()
    {
     $(this).slideUp();
    });
	
    $('ul ul li').mouseover(function(){
		$(this).css('background-color','red');
	});
	
	$('ul ul li').mouseout(function(){
		$(this).css('background-color','white');
	});
})
	
</script>
</head>

<body>

      <ul >
        <li>one</li>
        <ul >
          <li>1</li>
          <li>2</li>
          <li>3</li>
        </ul>
      </ul>
      <ul >
        <li>two</li>
        <ul>
          <li>1</li>
          <li>2</li>
          <li>3</li>
        </ul>
      </ul>
	  <ul >
        <li>three</li>
        <ul>
          <li>1</li>
          <li>2</li>
          <li>3</li>
        </ul>
      </ul>

</body>
</html>

 

上面是一个下拉菜单效果的源码,效果图如下:

提出如下问题:

1.为什么要用$(document).ready()事件?

--不用不行,呵呵。

当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。

这是事件模块中最重要的一个函数,因为它可以极大地提高web应用程序的响应速度。

简单地说,这个方法纯粹是对向window.load事件注册事件的替代方法。通过使用这个方法,可以在DOM载入就绪能够读取并操纵时立即调用你所绑定的函数,而99.99%的JavaScript函数都需要在那一刻执行。

 

2.$("ul ul").mouseleave()改成mouseout为啥不行?

--

大家知道事件的冒泡特性,在上面的BUG中也正是因为这个冒泡特性,对于mouseover事件来说 ,当鼠标从其他元素 移动到 child节点时发生,但此事件会冒泡 所以会导致 parent 也出发mouseover。如果我们对 parent注册了 mouseover监听,从 parent移动到child 同样出发parent的mouseover 有时候我们不希望这样的事情发生。

对于 mouseover 和mouseenter 两个事件 最大的区别就是 mouseenter 是 不冒泡的事件,这时候 如果注册的监听 是mouseenter的话 无论鼠标从任何元素 移动到child时 只有child元素 发生mouseenter事件 而其祖宗节点 都不会因为冒泡 而触发此事件。

3.你能让1、2、3与one对齐吗?

 改成如下排列,以li为单位

<ul>
	    <li><a href="#">AAAAA</a>
	        <ul >
				<li><a href="#">11</a></li>
				<li><a href="#">22</a></li>
				<li><a href="#">33</a></li>
				<li><a href="#">44</a></li>
		</ul>
	    </li>
</ul>


 

下面是相对强大点的实例

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="js/jquery-1.5.1.min.js"></script>
<script type="text/javascript">
$(function(){
    $('.meun').hover(function(){
     $(this).find('ul').stop(true,true).slideDown();
      },function(){$(this).find('ul').stop(true,true).slideUp('fast');
    })
}) 
</script>
<style>
*{margin:0;padding:0;}
a{text-decoration:none;color:#333;font-size:14px;}
ul{list-style:none;}
.nav{display:inline-block;margin:20px;height:30px;line-height:30px;background:#eee;}
.meun {float:left;position:relative;}
.meun a{display:inline-block;padding:0 10px;}
.meun a:hover{background:#333;}
.meun a:hover{color:#fff;}
.meun ul{display:none;position:absolute;left:0;top:30px;width:100px;background:#eee;border:1px solid #d3d3d3}
.meun ul a{display:block;}
</style>
</head>
<body>
<div class="nav">
     <ul>
	    <li class="meun in1"><a href="#">AAAAA</a>
	        <ul id="sub_01" class="sub" >
				<li><a href="#">11</a></li>
				<li><a href="#">22</a></li>
				<li><a href="#">33</a></li>
				<li><a href="#">44</a></li>
			</ul>
	    </li>
		<li class="meun in2"><a href="#">BBBBB</a>
			<ul id="sub_01" class="sub" >
				<li><a href="#">11</a></li>
				<li><a href="#">22</a></li>
				<li><a href="#">33</a></li>
				<li><a href="#">44</a></li>
			</ul>
		</li>
		<li class="meun in1"><a href="#">CCCCC</a>
	        <ul id="sub_01" class="sub" >
				<li><a href="#">11</a></li>
				<li><a href="#">22</a></li>
				<li><a href="#">33</a></li>
				<li><a href="#">44</a></li>
			</ul>
	    </li>

	 </ul>
  </div>
  
</body></html>


 我觉得这个可移植性很好,比较清晰。。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值