jQuery学习6:操纵元素显示效果的函数

jQuery提供了hide() ,show()对元素进行隐藏和显示,下面看两个函数的应用:

 

列表的折叠

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <title>Collapsible List &mdash; Take 1</title>
    <link rel="stylesheet" type="text/css" href="../common.css">
    <script type="text/javascript"
            src="../scripts/jquery-1.2.1.js"></script>
    <script type="text/javascript">
      $(function(){
        $('li:has(ul)')
          .click(function(event){
            if (this == event.target) {
              if ($(this).children().is(':hidden')) {
                $(this)
                  .css('list-style-image','url(minus.gif)')
                  .children().show();
              }
              else {
                $(this)
                  .css('list-style-image','url(plus.gif)')
                  .children().hide();
              }
            }
            return false;
          })
          .css('cursor','pointer')
          .click();
        $('li:not(:has(ul))').css({
          cursor: 'default',
          'list-style-image':'none'
        });
      });
    </script>
    <style>
      fieldset { width: 320px }
    </style>
  </head>

  <body>
    <fieldset>
      <legend>Collapsible List &mdash; Take 1</legend>
      <ul>
        <li>Item 1</li>
        <li>Item 2</li>
        <li>
          Item 3
          <ul>
            <li>Item 3.1</li>
            <li>
              Item 3.2
              <ul>
                <li>Item 3.2.1</li>
                <li>Item 3.2.2</li>
                <li>Item 3.2.3</li>
              </ul>
            </li>
            <li>Item 3.3</li>
          </ul>
        </li>
        <li>
          Item 4
          <ul>
            <li>Item 4.1</li>
            <li>
              Item 4.2
              <ul>
                <li>Item 4.2.1</li>
                <li>Item 4.2.2</li>
              </ul>
            </li>
          </ul>
        </li>
        <li>Item 5</li>
      </ul>
    </fieldset>
  </body>
</html>


 

上面实现列表的折叠已经很简单了,但jQuery提供了一个切换元素状态的函数toggle()。将上面红色字体的代码改为下面的代码,同样可以实现上述功能:

$(this).children().toggle();
              $(this).css('list-style-image',
                ($(this).children().is(':hidden')) ?
                  'url(plus.gif)' : 'url(minus.gif)');
            }
以上三个函数show()hide()toggle()在带参数的情况下可以实现元素逐渐的显示和隐藏

hide(speed,callback)

show(speed,callback)

toggle(speed,callback)

speed:可为数字或字符串,把效果的持续时间(可选)指定为毫秒数或预定义的字符串之一:slow、normal或fast。如果省略,就不产生动画并立即在显示屏上显示元素。

callback:回调函数(可选),在动画完成时调用。没有参数传递给这个函数,但函数上下文(this)被设置为以动画隐藏的元素。

 

动画效果的可折叠列表
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  
<head>
    
<title>Collapsible List &mdash; Take 3</title>
    <link rel="stylesheet" type="text/css" href="../common.css">
    
<script type="text/javascript"
            src
="../scripts/jquery-1.2.1.js"></script>
    <script type="text/javascript">
      $(
function(){
        $(
'li:has(ul)')
          .click(
function(event){
            
if (this == event.target) {
              $(
this).css('list-style-image',
                (
!$(this).children().is(':hidden')) ?
                  
'url(plus.gif)' : 'url(minus.gif)');
              $(
this).children().toggle('slow');
            }
            
return false;
          })
          .css({cursor:
'pointer',
                
'list-style-image':'url(plus.gif)'})
          .children().hide();
        $(
'li:not(:has(ul))').css({
          cursor: 
'default',
          
'list-style-image':'none'
        });
      });
    
</script>
    <style>
      fieldset { width: 320px }
    
</style>
  </head>

  
<body>
    
<fieldset>
      
<legend>Collapsible List &mdash; Take 3</legend>
      <ul>
        
<li>Item 1</li>
        <li>Item 2</li>
        <li>
          Item 
3
          
<ul>
            
<li>Item 3.1</li>
            <li>
              Item 
3.2
              
<ul>
                
<li>Item 3.2.1</li>
                <li>Item 3.2.2</li>
                <li>Item 3.2.3</li>
              </ul>
            </li>
            <li>Item 3.3</li>
          </ul>
        </li>
        <li>
          Item 
4
          
<ul>
            
<li>Item 4.1</li>
            <li>
              Item 
4.2
              
<ul>
                
<li>Item 4.2.1</li>
                <li>Item 4.2.2</li>
              </ul>
            </li>
          </ul>
        </li>
        <li>Item 5</li>
      </ul>
    </fieldset>
  </body>
</html>

 

 

posted @ 2010-02-01 11:11  草市江田  阅读(318)  评论(0编辑  收藏  举报