zoukankan      html  css  js  c++  java
  • <读书笔记>《锋利的jQuery》

    2016年4月3日

    第4章 jq中的事件和动画

    4.1 jq中的事件

    (1)window.onload、$(documet).ready()的区别:

    1.执行时机:window.onload需要整个页面加载完毕后才能运行脚本,而$(documet).ready()只需要dom树加载完毕便可以进行jq操作。

    2.使用次数:window.onload只能使用一次,而$(documet).ready()可以使用多次且都可以得到执行。

    (2)$(documet).ready() 三种简写方式:

    Jquery ready 函数:
    
    $(document).ready(function(){ 
    alert('I am ready. keleyi.com'); 
    } 
    ); 
    
    
    简写为:
    
    $(function(){ 
    alert("I am ready. keleyi.com"); 
    } 
    ); 
    
    
    即
    
    $(document).ready();
    等同于
    $();

    (3)bind绑定事件:

    • 可以发现,jq中的事件绑定类型比普通的javascript事件绑定类型少了"on"。
    • 常使用简写方式

    (4)合成事件

    hover():模拟光标悬停事件。

    mouseover与mouseenter

    • 不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。
    • 只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。

    mouseout与mouseleave

    • 不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。
    • 只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。

    toggle():模拟鼠标连续单击事件。

    toggle() 方法切换元素的可见状态。 

    (5)事件冒泡

    • 表单中event.preventDefault、冒泡事件中的event.stopPropagation(),都可以用return false替换以达到阻止事件冒泡效果。

    (6)事件捕获:是与事件冒泡相反的过程,事件捕获是从最顶端往下开始触发。

    特别的:

    • 并非所有主流浏览器都支持事件捕获,并且这个缺陷无法通过javascript来修复。
    • jq不支持事件捕获,如果需要,请直接使用原生javascript。

    (7)事件对象的属性

    • event.type
    • event.preventDefault
    • event.stopPropagation
    • event.target
    • event.pageX和event.pageY
    • event.which
    • event.metaKey 

    (8)移除事件

    $().unbind();

    (9)模拟操作

    (10)其他用法

     

    4.2 jq中的动画

    (1)show()和hide()方法 

    • show()、hide()是jq中最基本的动画方法。
    • 某元素调用该方法会使得该元的display样式改为"none"或者"block"。
    • 值得注意的是:hide()会记住元素原先的display属性,当调用show()时,会根据hide()记住的属性值来显示元素。
    • show()、hide()方法在不带任何参数的情况下,相当于css("display","none/block/inline")。
      $("element").hide();
      $("element").css("display","none");
      //以上两种方法等效
    • show()、hide()方法有一个参数代表动作的耗时:
      $("element").show(1000);
      $("element").hide(1000);

    (2)fadeIn()、fadeOut()

    • fadeOut():会在指定的时间内降低透明度,直到元素完全消失("display:none");,fadeIn()方法则相反。
    • 即淡入淡出的效果

    (3)slideUp()、slideDown()

    • slideUp()、slideDown()只会改变元素的高度。
    • 如果一个元素的display属性值为"none",当调用slideDown()时,这个元素将由上至下延伸显示,slideUp()则与之相反。

    jQuery中的任何动画效果,都可以指定是种速度参数,即“slow”“normal”和“fast”(事件长度分别为0.6秒、0.4秒、0.2秒)。当使用速度关键字时要加引号,输入使用数字作为事件参数则无需引号。

    $("element").show("slow");
    $("element").show(10000);

    (4)自定义动画方法animate()

    由于上述三类动画方法无法满足各种各样的动画需求,于是有了animate()方法来自定义动画,其语法结构如下:

    animate( params , speed , callback );

    必需的 params 参数定义形成动画的 CSS 属性。

    可选的 speed 参数规定效果的时长。它可以取以下值:"slow"、"fast" 或毫秒。

    可选的 callback 参数是动画完成后所执行的函数名称。

     详情请访问:http://www.w3school.com.cn/jquery/jquery_animate.asp

    (5)p131 动画方法概括

    4.3 视频展示效果实例

     

     

    2016年4月2日

    第3章 jq中的dom操作

    3.1分类

    (1)dom core

    (2)html-dom

    (3)css-dom 

    3.2 jq dom具体操作

    1."增删改查"api

    待实例化:

    (1)如果给一个元素添加多个class值,那么就相当于合并了它们的样式

    (2)如果有不同的class设定了同一个属性,则后者覆盖前者。

    2.p78 attr()和addClass()的区别:

    本质:前者会覆盖class值;后者则是是add即添加。

    3.设置和获取html、文本和值

    (1)html()

    (2)text()

    (3)val()

    4.demo——yahoo邮箱登录框的提示效果 

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title></title>
        <script type="text/javascript" src="框架/jquery-2.2.0.min.js"></script>
        <script type="text/javascript">
            $(function() {
                //对地址进行操作
                $("#address").focus(function() {
                    var txt_value = $(this).val();
                    if(txt_value=="请输入邮箱地址");
                        $(this).val("");
                });
                $("#address").blur(function() {
                    var txt_value = $(this).val();
                    if(txt_value=="");
                        $(this).val("请输入邮箱地址");
                });
                
                
                //对密码框进行操作
                $("#password").focus(function() {
                    var txt_value = $(this).val();
                    if(txt_value=="请输入邮箱密码");
                        $(this).val("");
                });
                $("#password").blur(function() {
                    var txt_value = $(this).val();
                    if(txt_value=="");
                        $(this).val("请输入邮箱密码");
                });
            });
        </script>
    </head>
    <body>
        <input type="text" id="address" value="请输入邮箱地址" />
        <input type="text" id="password" value="请输入邮箱密码" />
        <input type="button" value="登陆" />
    </body>
    </html>

     

    3.3 网站的超链接和图片提示效果

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <meta charset="utf-8">
     5     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     6     <title></title>
     7     <script type="text/javascript" src="框架/jquery-1.3.1.js"></script>
     8     <script type="text/javascript">
     9         $(function() {
    10             var x = 10;
    11             var y = 20;
    12             $("a.tooltip").mouseover(function(e) {
    13                 this.myTitle = this.title;
    14                 this.title = "";
    15                 var imgTitle = this.myTitle?"<br />"+this.myTitle:"";
    16                 var tooltip = "<div id='tooltip'><img src='"+ this.href +"' alt='产品预览图'/>"+imgTitle+"</div>"; //创建 div 元素
    17                 $("body").append(tooltip); //追加至文档
    18                 $("#tooltip")
    19                     .css({
    20                         "top":(e.pageY+y) + "px",
    21                         "left":(e.pageX+x) + "px"
    22                     }).show("fast");
    23             }).mouseout(function() {
    24                 this.title = this.myTitle;
    25                 $("#tooltip").remove(); //从文档删除
    26             }).mousemove(function(e) {
    27                 $("#tooltip")
    28                     .css({
    29                         "top":(e.pageY+y) + "px",
    30                         "left":(e.pageX+x) + "px"
    31                     });
    32             });
    33         })
    34     </script>
    35     <style type="text/css">
    36         * {margin: 0;padding: 0;font-size: 18px;}
    37         /* tooltip */
    38         #tooltip{
    39             position:absolute;
    40             border:1px solid #ccc;
    41             background:#333;
    42             padding:2px;
    43             display:none;
    44             color:#fff;
    45         }
    46         body{
    47             margin:0;
    48             padding:40px;
    49             background:#fff;
    50             font:80% Arial, Helvetica, sans-serif;
    51             color:#555;
    52             line-height:180%;
    53         }
    54         img{border:none;}
    55         ul,li{
    56             margin:0;
    57             padding:0;
    58         }
    59         li{
    60             list-style:none;
    61             float:left;
    62             display:inline;
    63             margin-right:10px;
    64             border:1px solid #AAAAAA;
    65         }
    66     </style>
    67 </head>
    68 <body>
    69     <ul>
    70         <li><a href="images/apple_1_bigger.jpg" class="tooltip" title="苹果 iPod"><img src="images/apple_1.jpg" alt="苹果 iPd" /></a></li>
    71         <li><a href="images/apple_2_bigger.jpg" class="tooltip" title="苹果 iPod nano"><img src="images/apple_2.jpg" alt="苹果 iPod nano"/></a></li>
    72         <li><a href="images/apple_3_bigger.jpg" class="tooltip" title="苹果 iPhone"><img src="images/apple_3.jpg" alt="苹果 iPhone"/></a></li>
    73         <li><a href="images/apple_4_bigger.jpg" class="tooltip" title="苹果 Mac"><img src="images/apple_4.jpg" alt="苹果 Mac"/></a></li>
    74     </ul>
    75 </body>
    76 </html>

     

     

     

    2016年4月1日

    1.p51 如果你的项目较早的使用了jq代码或插件,若把jq升级到最新后,出错或者不能运行,那么很有可能是因为代码中使用了属性选择器的@符号而引起的。

    2.p52 带空格与否的问题

    var $t_a = $('.test :hidden');

    以上代码是选取class为"test"的元素里面的隐藏元素
    var $t_b = $('.test:hidden');

    以上代码是选取隐藏的class为"test"的元素

    3.$a.click(){return false}; //超链接不跳转(之前在《js dom编程艺术》一书中学到过,再次巩固)

    4.其他选择器

    jQuery的选择器插件扩展

    (1)MoreSelectors for jQuery

    (2)Basic XPath

    其他使用css选择器的方法

    (1)document.getElenmentsBySelector()

    (2)cssQuery()

    (3)querySelectorAll()

     

     

    2016年3月31日

    1.$=jQuery

    2.p13 jq对象和dom对象的转换方法

    3.p14 $()函数就是一个jquery对象的制造工厂

    4.p27 $("#id")获取的永远是对象,所以不需要担心会出错,仅仅考虑length值,为1时,do something。

    5.p50 一系列精准的选择器

    6.p51 利用jq来改写前面的例子,然后进行列表效果实现,待练习

     

    春上来 尺八 乐谱

    6 .3 .2

     

  • 相关阅读:
    破解Excel写密码保护方法
    【收藏推荐】JavaScript 秘密花园
    Flask框架第六篇.Flask中的蓝图和特殊装饰器
    Flask框架第四篇.Flask 中的 请求Request和session
    Flask框架第三篇.Flask 中的 Response
    Flask框架第八篇.请求上下文
    Flask框架第一篇.Flask框架基础
    Flask框架第二篇.Flask中的配置
    Flask框架第五篇.Flask 中的路由
    Flask框架第七篇.CBV和Flasksession
  • 原文地址:https://www.cnblogs.com/thqy39/p/5345971.html
Copyright © 2011-2022 走看看