资讯专栏INFORMATION COLUMN

jquery集训营

guqiu / 1949人阅读

摘要:不论怎样嵌套,定位父级是谁,都是到达页面边缘的距离。原生的相对于定位的祖先节点的距离。后来添加的照样有事件,这是通过事件委托实现的。如果用普通写法,新添加的是没有事件的。一旦用时,一定要是用的。

元素的尺寸

width() height() ★★★★★

innerWidth() innerHeight() ★★★★★

outerWidth() outerHeight() ★★★★★

参数的作用

与原生JS的区别

元素尺寸的获取



    
        
    
    
    


div
元素尺寸的设置
与原生JS获取尺寸的区别
$(function(){
   alert($("#div1").get(0).offsetWidth); //0 原生的JS是获取不到隐藏元素的尺寸的
   alert($("#div1").width()); //100 JQ是可以获取隐藏元素的尺寸的
 })
实战小技巧

可视区的尺寸
页面的尺寸




    
    可视区的尺寸
    
    
    


div
滚动距离

scrollTop() ★★★★★scr
ollLeft() ★
滚动距离




    
    可视区的尺寸
    
    
    


div
元素距离

offset() ★★★★★

left top
position() ★★★

left top
不认margin值

offset()



    
    到达页面的距离:offset()
    
    
    


position
  alert($("#div2").position().left); //0
 #div2 {width: 100px; height: 100px; position: relative; left: 50px; background: yellow;}
  
实战小技巧

利用计算原理,得到相应值
offsetParent() ★
例子:懒加载页面中的图片
计算出到有定位的祖先节点的距离




    
    
    
    
    


    

懒加载图片




    
    
    
    
    


    
JQ的事件

on() ★★★★★

off() ★★★★★

JQ中都是绑定的形式
支持多事件写法
click()写法,也是采用off()取消

用on()的形式绑定事件



    
    jQuery中的事件
    
    


    
aaaaaa
用off()取消事件



    
    jQuery中的事件
    
    


    
aaaaaa
Event对象

常用性★★★★★

pageX, pageY 与cient的区别
which
target
stopPropagation()
preventDefault()
return false

pageX和pageY;clientX和clientY



    
    jQuery中的event事件对象
    
    
    


    
aaaaaa
which键盘键值



    
    jQuery中的event事件对象
    
    
    


    
aaaaaa
ev.target事件源



    
    jQuery中的event事件对象
    
    
    


    
aaaaaa
ev.stopPropagation() 阻止冒泡



    
    jQuery中的event事件对象
    
    
    


    
aaaaaa
ev.preventDefault() 阻止默认事件



    
    jQuery中的event事件对象
    
    
    


    
aaaaaa
return false 既阻止默认事件又阻止冒泡



    
    jQuery中的event事件对象
    
    
    


    
aaaaaa
JQ实战小技巧

多次添加on的处理方式
例子:拖拽效果

多次添加on的处理方式



    
    多次添加on的处理方式
    
    
    


    
aaaaaa
span
用jQuery实现拖拽效果



    
    用JQ实现拖拽
    
    
    


    
div
事件委托 delegate() ★★★★★

委托的好处
ev.delegateTarget




    
    事件委托
    
    
    


    
    
  • 11111
  • 11111
  • 11111
  • 11111
  • 11111
undelegate()

取消委托

trigger()

比click()形式更强大
事件的命名空间
例子:主动触发的添加内容




    
    事件的命名空间
    
    
    


    
    
  • 11111
  • 11111
  • 11111
  • 11111
  • 11111
事件的命名空间



    
    事件的命名空间
    
    
    


    
div
事件的命名空间2



    
    事件的命名空间
    
    
    


    
div
工具方法

教程网站

$.merge()



    
    
    
    
    



$.type()

★★★★★比原生typeof更强大




    
    $.type()
    
    
    


    
div

$.isFunction() ★★★

$.isNumeric() ★★★

$.isArray() ★★★

$.isWindow() ★★★

$.isEmptyObject() ★★★

$.isPlainObject() ★★★

$.extend() ★★★★★

对象继承操作
深拷贝操作




    
    $.extend() 对象的拷贝
    
    



$.proxy() ★★★

两处传参的的区别
$.proxy()改变this指向的用法




    
    $.proxy改变this指向
    
    



用$.proxy()传参的用法




    
    $.proxy改变this指向
    
    






    
    $.proxy改变this指向
    
    



JQ实战小技巧

利用This改指向,更加方便




    
    $.proxy改变this指向
    
    
    


    

本课练习:登录弹窗效果

$.map()

$.map方法也是用来遍历数组和对象,但是会返回一个新对象




    
    
    
    
    



$.grep()



    
    
    
    
    



$.unique()



    
    
    
    
    


    
div
div
div
$.inArray()



    
    
    
    
    


    
div
div
div
$.makeArray()



    
    
    
    
    


    
div
div
div
$.trim()

用于移除字符串头部和尾部多余的空格

$.trim("   Hello   ") // Hello
ajax扩展 $.param() ★★★



    
    
    
    
    


    
div
div
div
serializeArray()

常用度★★★




    
    
    
    
    


    
load()

常用度 ★筛选的功能




    
    
    
    
    


    
$.getScript()

常用度★
$.getJSON
常用度★

JSONP,不受同源影响

建议直接使用问号

$(function(){
            // $.getJson() 动态请求json或JsonP
            //直接用$.getJSON,我们就不需要再通过设置dataType: json了
            $.getJSON("data.php", function(data){
                console.log(data);
            }); //data.php返给我们的是一个json格式
 })
jsonp的形式
$.getJSON("data.php?callback=?", function(data){ //data.php返回的是jsonp的形式,我们就可以后面添上callback=? 注意其中callback是key值,而问号?是value值。一旦用getJSON时,一定要是用callback=?的。如果给callback指定了名称,那么返回的是字符串形式,并不是json形式,在getJSON里面就解析不了,所以就只能走error。所以在$.getJSON()里面给callback命名是没有意义的,一定要是用?才可以自动解析
                console.log(data);
            }).error(function(err){
                console.log(err);
            });
            $.ajax({ //在使用ajax的时候,可以给callback自定义名称,例如下面定义了“show”
                url:"data.php?callback=show",
                success: function(data){
                    //返回的数据就是一个类似"show({name: "hello"})"的字符串,然后再后续处理进行使用
                }
            })
            //另外如果在$.ajax()中设置了datatype为"jsonp",那么在url的地方是不需要加callback的,因为它会自动添加好
$.ajaxSetup()

常用度★
默认配置

$(function(){
            //如果有很多ajax,那么可以利用$.ajaxSetup()来进行默认设置
            $.ajaxSetup({
                type: "POST" //那么所有的ajax传输类型都改为post了
            });
})

全局事件
加到document上,参数的意义
$.ajaxStart()
$.ajaxStop()
$.ajaxSuccess()
$.ajaxError()
$.ajaxComplete()
$.ajaxSend()
属性
Global, Context
JSONP, jsonpCallback
Cache, Timeout
processData
contentType
ajax参考资料

$.noConflict()

常用度★
防止库之间冲突

  
$.each()

常用度★★★
遍历

 


    
    
    
    
   


    
后退链式操作 end() addBack()

常用度★




    
    
    
    
   


    
div
span
JQ中的队列 queue().dequeue()

概念与参数意义

队列名称

 $(function(){
            //$.queue() 三个参数:队列添加到哪个元素身上;队列的名字;第三个参数是一个函数
            //$.dequeue() 两个参数:元素和队列名字
            //JQ中的队列,存储的都是函数
            //JQ的队列,当进行出队的操作的时候,会自动执行相应的函数
            function a(){
                alert(1);
            }
            function b(){
                alert(2);
            }
            function c(){
                alert(3);
            }
            $.queue(document, "myeve", a);
            $.queue(document, "myeve", b);
            $.queue(document, "myeve", c);
            $.dequeue(document, "myeve"); //弹1
            $.dequeue(document, "myeve"); //弹2
            $.dequeue(document, "myeve"); //弹3
        })

queue() dequeue()

源码分析运动队列

默认队列名fx

队列的具体应用基本使用

基本使用




    
    
    
    
   


    
div



    
    
    
    
   


    
div
JQ中的回调对象 $.Callbacks()

基本概念与用法

add

remove

fire

应用场景

四大参数

once

memory

unique

stopOnFalse

$(function(){
            function a(){
                alert(1);
            }
            function b(){
                alert(2);
            }
            function c(){
                alert(3);
            }
            var cb = $.Callbacks(); //回调对象
            cb.add(a); //a添加到回调对象的集合里面
            cb.fire(); //fire就是触发 弹出1
            cb.add(b); 
            cb.fire(); //弹出1和2
            cb.add(c);
            cb.remove(b);
            cb.fire(); //弹出1和3
 })   

用回调对象来解决作用域的问题

$(function(){
            var cb = $.Callbacks();
            function a(){
                alert(1);
            }
            (function(){
                function b(){
                    alert(2);
                }
                cb.add(a);
                cb.add(b);
            })();
           // a(); //弹1
            //b(); //b这个函数是找不到的,因为作用域里面没它
            cb.fire(); //弹1、2
 }) 
once
   $(function(){
            function a(){
                alert(1);
            }
            function b(){
                alert(2);
            }
            function c(){
                alert(3);
            }
            //参数 once:只能触发一次
            var cb = $.Callbacks("once");
            cb.add(a);
            cb.add(b);
            cb.fire(); //弹1、2
            cb.fire(); //因为添加了参数once,所以前面触发过一次之后,这里不再触发
        }) 
 
memory
    $(function(){
            function a(){
                alert(1);
            }
            function b(){
                alert(2);
            }
            function c(){
                alert(3);
            }
            //参数 memory:不管前后添加的都一起触发
            var cb = $.Callbacks("memory");
            cb.add(a);
            cb.add(b);
            cb.fire(); //弹1、2、3,因为参数memory,让触发时不管前面后面add的都触发
            cb.add(c); 
 })  
unique
  $(function(){
            function a(){
                alert(1);
            }
            function b(){
                alert(2);
            }
            function c(){
                alert(3);
            }
            //参数 unique:去重功能
            var cb = $.Callbacks("unique");
            cb.add(a);
            cb.add(a);
            cb.add(a);
            cb.add(b);
            cb.fire(); //弹1、2,而不是弹1,1,1,2
        })  
stopOnFalse
  $(function(){
            function a(){
                alert(1);
            }
            function b(){
                alert(2);
                return false;
            }
            function c(){
                alert(3);
            }
            //参数 unique:去重功能
            var cb = $.Callbacks("stopOnFalse");
            cb.add(a);
            cb.add(a);
            cb.add(b);
            cb.add(c);
            cb.fire(); //弹1,1,2 不谈3,因为在b里面碰到了false就不继续执行后面的函数c了
        })  
参数的组合使用
  $(function(){
            function a(){
                alert(1);
            }
            function b(){
                alert(2);
                return false;
            }
            function c(){
                alert(3);
            }
            //回调对象的参数可以组合使用
            var cb = $.Callbacks("once memory");
            cb.add(a);
            cb.add(a);
            cb.add(b);
            cb.fire(); //弹1,1,2,3   
            cb.add(c);
            cb.fire(); //什么也不弹
        })  
JQ中的延迟对象

常用度★★★

$.Deferred()

基本概念与用法

与Callbacks()对比学习

应用场景

状态的定义

状态的映射 resolve, done reject, fail

ajax中的应用 $.when()

利用状态的应用

JQ插件编写 ★★★

$.fn.extend() this指向
$.extend()

编写插件基本格式

分析jQuery.e-calendar

配置参数

方法

自定义事件

实例:编写选项卡插件

$.extend()与$.fn.extend()
扩展工具方法
 $(function(){
            //$.trim是去掉左右空格,现在扩展一个只去左边空格的方法
            $.extend({
                leftTrim: function(str){
                    //this : 工具方法中 this与$等价
                    return str.replace(/^s+/g,"");
                }
            });
            var str = "   hello  ";
            alert("(" + $.leftTrim(str) + ")");
        })
扩展实例方法



    
    
    
    
    


    
div1
div2
div3
选项卡插件



    
        编写选项卡的插件
    
    
 


    
Sizzle选择器 ★★★

介绍与实现接口

$() -> find()

通用选择 *

层级选择 > + ~

基本筛选 :

animated

:eq()

:even

:odd

:first

:last

:gt()

:lt()

内容筛选

:contains()

:empty

:parent

可见性筛选

:hidden

:visible

子元素筛选

:first-child

:last-child

:first-of-type

:last-of-type

:nth-child()

:nth-of-type()

:only-child

:only-of-type

表单筛选

:button

:checkbox

:radio

:checked

:disabled

:enabled

:selected

筛选方法 ★

filter()
not()
has()

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/79373.html

相关文章

  • 【一年总结】记我的大二生活

    摘要:而过去发生的一切,恍若昨天我一直都有个计划每隔半年写一篇总结以记录我的大学生活,回看过去,总结不足,这便是我当初写这个专题的目的。在大一结束的时候,我也写过一篇一年总结记我的大一生活。 ...

    shiina 评论0 收藏0
  • 阿里云故障「惊魂」1小时:难道我们是那0.1%?

    摘要:一场因阿里云故障引发的突发事件,导致他所在的互联网金融公司几近瘫痪。此次事故从点分至点分,时长约一小时。对此,阿里云方面不予置评。但阿里云相关负责人向新浪科技表示,赔偿问题将按照相关服务保障条款进行处理。 6月27日晚,北京国贸写字楼2座灯火通明。林晓宇疾步往返于运维部与研发部的走廊上,表情有些凝重。  一场因阿里云故障引发的突发事件,导致他所在的互联网金融公司几近瘫痪。在运维部工作近一年,...

    darkerXi 评论0 收藏0
  • 6月榜单出炉:Python接连拔得头筹!

    摘要:曾经霸主的下降最为严重,直接惨跌,跌落第,也持续跌落,前大语言中只有是保持正增势的势头。时代的语言作为人工智能和大数据的支持语言,已经成为头牌语言。根据调查显示,的企业在面临拟定策略时,常常无法获得实时且有根据的决策信息。 妥妥的,作为编程界的老大,Python又一次霸榜了!!! 今年6月份,PYPL最新报告已经出炉了,Python持续称王的脚步已经无人能阻止了!话不多说,我们来看报告...

    rubyshen 评论0 收藏0
  • 6月榜单出炉:Python接连拔得头筹!

    摘要:曾经霸主的下降最为严重,直接惨跌,跌落第,也持续跌落,前大语言中只有是保持正增势的势头。时代的语言作为人工智能和大数据的支持语言,已经成为头牌语言。根据调查显示,的企业在面临拟定策略时,常常无法获得实时且有根据的决策信息。 妥妥的,作为编程界的老大,Python又一次霸榜了!!! 今年6月份,PYPL最新报告已经出炉了,Python持续称王的脚步已经无人能阻止了!话不多说,我们来看报告...

    pingink 评论0 收藏0
  • 华为全年收或将突破千亿美元大关,消费者及公有云业务表现强劲

    摘要:华为轮值董事长徐直军对外宣称,华为今年的收入将首次突破亿美元大关,好于预期。而今年下半年华为动作频繁,在接下来的一个月想要全年总营收破千亿美元大关并不是难事。从华为目前的几大业务线看,推动其营收增长最大功臣莫过于消费者业务了。华为轮值董事长徐直军对外宣称,华为今年的收入将首次突破1000亿美元大关,好于预期。但具体业务增长情况,徐直军并未做过多透露。相关数据统计显示,去年全年,华为总营收为9...

    sunsmell 评论0 收藏0

发表评论

0条评论

guqiu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<