5

jQuery

  • 提高业务编程能力

    • JQ中提供了很多的方法(基本都兼容),我们可以使用这些方法快速开发项目

    • JQ中有的方法提供的思想可以让我们把项目实现得更优化

  • 提高JS基础以及一些高级编程思想

    • 分析JQ源码,学习里面类库封装的思想和一些方法实现的原理

    • 有时间把JQ中提供的常用方法都去实现一遍,提高自己的编程能力

1.jQuery的原理
  • jquery-1.xxx: 专门为PC端诞生的类库,兼容所有的浏览器

  • jquery-2.xxx: 当初是为了移动端而准备的,所以IE低版本浏览器一般不兼容,但是这个版本针对移动端的事件等操作也不是特别完善,被Zepto这个类库取代了

jQuery充分利用了JS中函数的三种特性:普通函数、类、普通对象;jQuery就是这个类,在外面使用的$和jQuery是一个东西,jQuery中提供的方法分为两部分:写在原型上的方法和写在jQuery私有属性上的方法;创建jQuery实例的时候,会返回一个类数组(它也是jQuery实例),这个类数组是jQuery自己去创建的,里面有一些自己特定的属性

//jQuery核心原理
(function(){
    var version="1.11.3",
    jQuery=function(selector,context){
        return jQuery.fn.innt(selector,context);
    };
    
    jQuery.fn=jQuery.prototype={
        //...
        init:function(selector,context){
            
        }
    };
    
    jQuery.ajax=function(){};
    
    window.jQuery=window.$=jQuery;
    
})();
  • jQuery对象和JS对象相互转换

//jQuery对象转换成JS对象
var $obj=$("*");
$obj[0];  //-->JS对象
$obj.get(0);  //-->JS对象
$obj.eq(0)  //-->这个获取的是jQuery对象

//JS对象转换成jQuery对象
var obj=document.getElementsByTagName("*");
$(obj);  //-->jQuery对象
  • extend

在jQuery对象上和jQuery实例上都有这个方法,并且都是同一个方法,但是这两个方法执行时其this指向不一样,也就是说extend所扩展的方法所在的扩展位置不一样

$.extend({
    aa:function(){}
});
$.aa();
//->aa扩展到jQuery的属性上了:完善类库,提供一些常用的操作方法,例如,数组去重...

$.fn.extend({
    bb:function(){}
});
$([select]).bb();
//-->bb扩展到jQuery的原型上了:扩展插件,例如,选项卡、轮播图、登录、验证...
2.jQuery的常用方法
  • 1)选择器

CSS选择器有哪些,jQuery选择器基本上就有哪些:#ID、.class、tagName、*、selector,selector、parent offspring、parent>child、:first、:last、:not、:contain、:eq、:gt、:lt、:text...

  • 2)核心方法

    • $([selector|node|function],[context])

    • $([html])

    • each(callback)

    • get()

    • index()

    • length

    • context

    • selector

    • noConflict()

    • extend()

  • 3)属性方法

    • attr():设置或获取自定义属性值,获取的值是字符串类型的

    • removeAttr()

    • prop():操作的是元素的内置属性

    • addClass()

    • removeClass()

    • hasClass()

    • toggleClass()

    • html():获取或设置元素的innerHTML

    • text():获取或设置元素的innerText

    • val():获取或设置元素的value值

  • 4)CSS方法

    • css()

    • offset():当前元素距离body的偏移:{top:xxx,left:xxx}

    • position():当前元素距离父级已定位参照物的偏移

    • scrollTop() / scrollLeft():获取或者设置滚动值

    • height() / width():设置或获取元素的宽高

    • innerWidth() / innerHeight():获取元素的clientHeight/clientWidth

    • outerWidth() / outerHeight():获取元素的offsetHeight/offsetWidth

  • 5)DOM操作方法

    • append()

    • appendTo()

    • prepend()

    • prependTo()

    • insertBefore() / insertAfter()

    • clone()

    • remove()

  • 6)筛选方法

    • eq()

    • filter():同级筛选

    • children():子级筛选

    • find():后代筛选

    • first() / last()

    • not()

    • slice()

    • next() / prev()

    • nextAll() / prevAll()

    • sibings()

    • add()

    • contents()

  • 7)动画方法

    • animate()

    • stop()

    • finish()

    • show() / hide() / toggle()

    • fadeIn() / fadeOut() / fadeToggle()

    • sliceDown() / sliceUp() / scliceToggle()

    • delay()

  • 8)事件方法

    • on() / off():解决jQuery事件的一切需求,其它方法也是从这个方法里扩展的

    • bind() / unbind() / trigger()

    • one()

    • live() / delegate()

    • click()/hover()/mouseover()...

  • 9)工具方法

    • callbacks()

    • makeArray()

    • toArray()

    • parseJSON()

    • parseXML()

    • type()

    • isFunction()

    • trim()

    • param()

//只要当前页面的HTML结构加载完成,就会执行回调函数,而且在一个页面中可以执行多次
$(document).ready(function(){
    //<javascript code>

});

$(function(){});  //这种方式和上面的方式一样,没有区别


折丹
139 声望9 粉丝

debug