《锋利的JQuery》读书要点笔记4

Posted f91og

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《锋利的JQuery》读书要点笔记4相关的知识,希望对你有一定的参考价值。

第五章 jQuery对表单,表格的操作以及更多应用

这章主要以一些具体案例讲解了jQuery对表单,表格的常用操作,以及一些常见的jQuery应用,用到的都是上几章说的东西。下面就以具体的案例来展开。


5.1 表单应用

案例1:文本框获取和失去焦点时改变其样式。

<!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=utf-8" />
<title></title>
<style type="text/css">    //引入css样式
body{
    font:normal 12px/17px Arial;
}
div{
    padding:2px;
} 
input, textarea { 
     width: 12em; 
     border: 1px solid #888;
}
.focus { 
     border: 1px solid #f00;
     background: #fcc;
} 
</style>
<!--   引入jQuery -->
<script src="../../scripts/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
    $(function(){
        $(":input").focus(function(){
              $(this).addClass("focus");
        }).blur(function(){
              $(this).removeClass("focus");
        });
    })
    </script>
</head>
<body>
    <form action="" method="post" id="regForm">
        <fieldset>
            <legend>个人基本信息</legend>
                <div>
                    <label  for="username">名称:</label>
                    <input id="username" type="text" />
                </div>
                <div>
                    <label for="pass">密码:</label>
                    <input id="pass" type="password" />
                </div>
                <div>
                    <label for="msg">详细信息:</label>
                    <textarea id="msg" rows="2" cols="20"></textarea>
                </div>
        </fieldset>
    </form>
</body>
</html>

 说明:<fieldset> 标签对表单中的相关元素进行分组,会在相关表单元素周围绘制边框。 <legend> 元素为 <fieldset>元素定义标题。表单选择器 ":input" ,选取所有的<input>,<textarea>,<select>和<button>.

运行结果:


案例2:多行文本框的应用,控制评论框的高度以及滚动条高度变化

<!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=utf-8" />
<title></title>
<style type="text/css">
* { margin:0; padding:0;font:normal 12px/17px Arial; }
.msg {width:300px; margin:100px; }
.msg_caption { width:100%; overflow:hidden; margin-bottom:1px;}
.msg_caption span { display:block; float:left; margin:0 2px; padding:4px 10px; background:#898989; cursor:pointer;color:white; }
.msg textarea{ width:300px; height:80px;height:100px;border:1px solid #000;}
</style>
 <!--   引入jQuery -->
<script src="../../scripts/jquery.js" type="text/javascript"></script>
 <script type="text/javascript">
    $(function(){
        var $comment = $(\'#comment\');  //获取评论框
        $(\'.bigger\').click(function(){ //放大按钮绑定单击事件
           if(!$comment.is(":animated")){ //判断是否处于动画
              if( $comment.height() < 500 ){ 
                      $comment.animate({ height : "+=50" },400); //重新设置高度,在原有的基础上加50,此处用动画实现变化的缓冲效果
              }
            }
        })
        $(\'.smaller\').click(function(){//缩小按钮绑定单击事件
           if(!$comment.is(":animated")){//判断是否处于动画
                if( $comment.height() > 50 ){
                    $comment.animate({ height : "-=50" },400); //重新设置高度,在原有的基础上减50
                }
            }
        });
    });
  </script>
</head>
<body>
<form action="" method="post">
<div class="msg">
    <div class="msg_caption">
        <span class="bigger" >放大</span>
        <span class="smaller" >缩小</span>
    </div>
    <div>
        <textarea id="comment" rows="8" cols="20">多行文本框高度变化.多行文本框高度变化.多行文本框高度变化.多行文本框高度变化.多行文本框高度变化.多行文本框高度变化.多行文本框高度变化.多行文本框高度变化.多行文本框高度变化.</textarea>
    </div>
</div>
</form>
</body>
</html>

 运行结果:

 

滚动条高度变化:主要是控制scrollTop属性

$(function(){
        var $comment = $(\'#comment\');//获取评论框
        $(\'.up\').click(function(){ //向上按钮绑定单击事件
           if(!$comment.is(":animated")){//判断是否处于动画
                $comment.animate({ scrollTop  : "-=50" } , 400);
            }
        })
        $(\'.down\').click(function(){//向下按钮绑定单击事件
           if(!$comment.is(":animated")){
                $comment.animate({ scrollTop  : "+=50" } , 400);
            }
        });
    });

 案例3:复选框的应用

对复选框进行全选,反选和全不选等操作。

<!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=utf-8" />
<title></title>
 <!--   引入jQuery -->
<script src="../../scripts/jquery.js" type="text/javascript"></script>
 <script type="text/javascript">
  $(function(){
     //全选
     $("#CheckedAll").click(function(){
         $(\'[name=items]:checkbox\').attr(\'checked\', true);
     });
     //全不选
     $("#CheckedNo").click(function(){
        $(\'[type=checkbox]:checkbox\').attr(\'checked\', false);
     });
     //反选
     $("#CheckedRev").click(function(){
          $(\'[name=items]:checkbox\').each(function(){
            //此处用JQ写法颇显啰嗦。体现不出JQ飘逸的感觉。
            //$(this).attr("checked", !$(this).attr("checked"));
            //$(this).prop("checked", !$(this).prop("checked"));
            
            //直接使用JS原生代码,简单实用
            this.checked=!this.checked;
          });
     });
     //输出值
    $("#send").click(function(){
        var str="你选中的是:\\r\\n";
        $(\'[name=items]:checkbox:checked\').each(function(){
            str+=$(this).val()+"\\r\\n";    //注意这里的val()方法取的是checkbox的value属性值,如果不设value属性值的话,取到的结果是"on"
        })
        alert(str);
    });
  })
  </script>
</head>
<body>
<form method="post" action="">
   你爱好的运动是?
   <br/>
    <input type="checkbox" name="items" value="足球"/>足球
    <input type="checkbox" name="items" value="篮球"/>篮球
    <input type="checkbox" name="items" value="羽毛球"/>羽毛球
    <input type="checkbox" name="items" value="乒乓球"/>乒乓球
   <br/>
    <input type="button" id="CheckedAll" value="全 选"/>
    <input type="button" id="CheckedNo" value="全不选"/>
    <input type="button" id="CheckedRev" value="反 选"/> 
    <input type="button" id="send" value="提 交"/> 
</form>
</body>
</html>

 用另一个复选框来控制而不用按钮:

<!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=utf-8" />
<title></title>
 <!--   引入jQuery -->
<script src="../../scripts/jquery.js" type="text/javascript"></script>
 <script type="text/javascript">
$(function(){
     //全选
     $("#CheckedAll").click(function(){
            //所有checkbox跟着全选的checkbox走。
            $(\'[name=items]:checkbox\').attr("checked", this.checked );
     });
     $(\'[name=items]:checkbox\').click(function(){
                //定义一个临时变量,避免重复使用同一个选择器选择页面中的元素,提升程序效率。
                var $tmp=$(\'[name=items]:checkbox\');
                //用filter方法筛选出选中的复选框。并直接给CheckedAll赋值。
                $(\'#CheckedAll\').

以上是关于《锋利的JQuery》读书要点笔记4的主要内容,如果未能解决你的问题,请参考以下文章

锋利的jQuery读书笔记 第11章

jQuery中的事件和动画——《锋利的jQuery》(第2版)读书笔记2

《锋利的jQuery》(第2版)读书笔记4

锋利的jQuery读书笔记 第3章第4章 第5章

锋利的jQuery-读书笔记

jQuery与Ajax的应用——《锋利的jQuery》(第2版)读书笔记3