jQuery知识整理

jQuery

其是对javascript封装的一个框架包
简化对javascript的操作
javascript代码:获得页面节点对象、ajax元素节点对象实现、事件操作、事件对象
jquery代码:无需考虑浏览器兼容问题、代码足够少



特点:
①   语法简练、语义易懂、学习快速、丰富文档。 
②   jQuery 是一个轻量级的脚本,其代码非常小巧 
③   jQuery 支持 CSS1~CSS3 定义的属性和选择器 
④   jQuery 是跨浏览器的,它支持的浏览器包括 IE 6.0+、FF 1.5+、Safari 2.0+和 Opera 9.0+。 
⑤   能将 JavaScript 脚本与 HTML 源代码完全分离,便于后期编辑和维护。 
⑥   插件丰富,除了 jQuery 自身带有的一些特效外,可以通过插件实现更多功能  

3. 出现的年代
jQuery 是继 Prototype 之后又一个优秀的 JavaScript 框架,由 John Resig 于 2006 年初创建, 目前最新版本为 1.11.2,官方地址为:http://jquery.com/,中文地址为 http://jquery.org.cn/。 
4. 其他相关的javascript框架包
Prototype、YUI、Extjs、bindows、JSVM(国内)、mootools、jQuery

Prototype:与面向对象的原型继承关键字一致,该框架的特点是功能扩展比较容易。
YUI:  yahoo  user  interface 雅虎用户接口,该框架可以实现各种页面布局效果。
    例如效果之一:标签切换对应内容

Extjs: 是目前js框架包里边最为时尚、前沿的。通过该框架包可以实现许多非常绚丽的效果。
     该框架可以实现效果之一:页面不同区域进行拖拽效果。
    该框架由于实现的效果非常“绚丽”、导致其“实用”价值相对略低。
    
jQuery:javascript+query  
    使用前期,jquery侧重快速找到页面上各种节点。
    后期jquery丰富了事件操作、ajax操作、动画效果、DOM操作等等。

 选择器
在页面上获得各种元素节点对象而使用的条件就是选择器。
document.getElementById()
document.getElementsByTagName();
document.getElementsByName();
1. 基本选择器
$(‘#id属性值’)  ----------->document.getElementById()
$(‘tag标签名称’)----------->document.getElementsByTagName();
$(‘.class属性值’)  class属性值选择器
$(‘*’)     通配符选择器
$(‘s1,s2,s3’)联合选择器

层次选择器
2.1 $(s1  s2) [父子]
派生选择器:在s1内部获得全部的s2节点(不考虑层次)
$(“div  span”)

2.2 $(s1 > s2) [父子] 直接子元素选择器:在s1内部获得s2的子元素节点 $(“div > span”)

2.3 $(s1 + s2) [兄弟] 直接兄弟选择器:在s1后边获得紧紧挨着的第一个兄弟关系的s2节点 $(“div + span”)

2.4 $(s1 ~ s2) [兄弟] 后续全部兄弟关系节点选择器:在s1后边获得全部兄弟关系的s2节点 $(“div ~ span”)

3. 并且(过滤)选择器: :first $("tr:first") :last :not :even :odd :eq(index) :gt(index) :lt(index) :gt(index) :header 匹配h1...h6标题元素 内容过滤选择器 4.1 :contains(内容) 包含内容选择器,获得节点内部必须通过标签包含指定的内容 $(“div:contains(beijing)”)
linken love beijing
jack love shanghai
4.2 :empty 获得空元素(内部没有任何元素/文本(空) )节点对象 $(“div:empty”)
linken love beijing
jack love shanghai
4.3 :has(选择器) 内部包含指定元素的选择器 $(“div:has(#apple)”)
hello

4.4 :parent 寻找的节点必须作为父元素节点存在 $(“div:parent”)
linken love beijing
jack love shanghai
5. 表单域选中选择器 复选框、单选按钮、下拉列表 $(:checked) : 过滤出被选中的复选框,单选按钮 $("input:lt(4):checked"); $(:selcted) 获得下拉列表的选中情况 四. 属性操作 itnode.属性名称 itnode.属性名称= 值; itnode.getAttribute(属性名称); itnode.setAttribute(属性名称,值); jquery方式操作属性(attribute): $().attr(属性名称); //获得属性信息值 $().attr(属性名称,值); //设置属性的信息 $().removeAttr(属性名称); //删除属性 $().attr(json对象); //同时为多个属性设置信息值,json对象的键值对就是名称和值 $().attr(属性名称,fn); //通过fn函数执行的return返回值对属性进行赋值 五. 快捷操作 1. class属性值操作 $().attr(‘class’,值); $().attr(‘class’); $().removeAttr(‘class’); //删除class的属性 $().addClass(值); //给class属性追加信息值 $().removeClass(值); //删除class属性中的某个信息值 $().toggleClass(值); //开关效果,有就删除,没有就添加 标签包含内容操作
helloworld
javascript操作: dvnode.innerHTML 获得div包含的信息 dvnode.innerHTML = XXX; 设置div包含的内容 (innerHTML不是w3c标准技术,许多浏览器对其有支持而已) jquery操作: $().html(); //获得节点包含的信息 $().html(信息); //设置节点包含的内容 $().text(); //获得节点包含的“文本字符串信息”内容 $().text(信息); //设置节点包含的内容(有html标签就把“><”符号变为符号实体) 1 html() 和 text()方法的区别: ① 获取内容 前者可以获取html标签 和 普通字符串内容 后者只获取普通字符串内容 ② 设置内容 前者可以设置html标签 和 普通字符串内容 后者只设置普通字符串内容,如果内容里边有tag标签内容,就把其中的”<”“>”符号转变为符号实体 <-----< >----> 空格------  以上两种操作(获取/设置)如果针对的操作内容是纯字符串内容,则使用效果一致。 3. css样式操作 $().css(name,value); //设置 $().css(name); //获取 $().css(json对象); //同时修改多个css样式 3.1 css()样式操作特点: ① 样式获取,jquery可以获取 行内、内部、外部的样式。 dom方式只能获得行内样式 ② 复合属性样式需要拆分为"具体样式"才可以操作 例如: background 需要拆分为 background-color background-image 等进行操作 border: border-left-style border-left-width border-left-color 等 margin: margin-left margin-top 等 value属性快捷操作 $().attr(‘value’); $().attr(‘value’,信息值); 快捷操作: $().val(); //获得value属性值 $().val(信息值); //设置value属性的值 该val方法在 复选框、单选按钮、下拉列表 的使用有凸出表现。 复选框操作 全选、反选、全不选 $().attr(‘checked’,true); //设置复选框选中 $().attr(‘checked’,false); //取消复选框选中 $().attr(‘checked’); //判断复选框选中情况,返回布尔值 总结: 1. 属性操作 $().attr(name) $().attr(name,value) $().attr(json对象); $().removeAttr(name) $().attr(name,function) 2. 快捷操作 a) class属性值的操作 $().addClass(value) $().removeClass(value) $().toggleClass(value) b) 包含内容操作 $().html() $().html(value) $().text() $().text(value) c) css样式操作 $().css(name,value) $().css(name) $().css(json对象) d) val() $().val() $().val(value) e) 复选框选中操作 $().attr(‘checked’,true); $().attr(‘checked’,false);
  • jQuery和DOM关系
$符号的由来
$(‘div’)  $(‘.apple’)  $(‘*’)等等。
$符号就是一个函数,函数名称为”$”符号而已。也可以使用jQuery符号。



var jQuery = (function(selctor,context){
    return new jQuery.fn.init(selector,context);
}
    return window.jQuery = window.$ = jQuery
);

使用jquery过程中用到的$符号,其在jquer框架内部体现为是函数,其和jQuery关键字互为别名

jquery对象 与 dom对象关系
jquery对象:$(‘li’)  $(‘.apple’) 等选择器使用返回的信息就是jquery对象
dom对象: document.getElementById()  
           document.getElementsByTagName();

           
1. jquery对象 和 dom对象 互相调用对方的成员
 jquery对象 与 dom对象 互相调用对方成员失败了
原因:它们不是平等关系,导致其成员也有层次划分。
jquery对象 是 包含 dom对象的

2.jquery对象 如何封装的dom对象
dom对象 和jquery对象做合并,dom对象 是jquery对象 的数组组成部分。

3. jquery对象 和 dom对象 的转化
3.1 jquery对象-----》dom对象: $()[下标]
$("#apple")[1].style.backgroundColor = "red";

3.2 dom对象-----》jquery对象:$(dom对象)
var div = document.getElementById("apple");
$(div).css("background-color","green");

var lis = document.getElementsByTagName("li");
$(lis[2]).css('color','red');

  • jquery框架对象分析
jquery框架对象类型:jquery对象  和  $对象
① jquery对象就是各种选择器创建出来的对象
② $对象就是函数对象
1. jquery对象
$("#apple").css()/attr()/html()/text()/addClass  等方法可以调用


2. $函数对象
    $函数对象可以调用的许多成员也是通过extend复制继承过来的
    $.get()  $.post()   $.ajax()

上无论是jquery对象 还是 $对象,他们98%以上的成员都是通过各自的extend复制继承过来的。


遍历方法
each()方法:
$.each(数组/对象,function处理);  //$对象      调用的
$(选择器).each(function处理);   //jquery对象  调用的

//each遍历对象

var cat = {name:"kitty",age:22,run:function(){console.log("running!")}};

jQuery.each(cat,function(k,v){
    console.log(k+'----'+v);
});

//2.遍历对象
var colors = ['red','blue','green'];
jQuery.each(colors,function(i,val){
    console.log(i + '----' + val);
});

/*
遍历jQuery对象
$('li').each(function(i dom对象下标索引,val 代表具体的dom对象){});

    this代表遍历出来的每个DOM对象
*/

$('li').each(function(i,val){
    console.log(i + '----' + val+'+++'+ this);
});


  • 加载事件
javascript的加载事件:
    
    window.onload = function(){}
1. jquery加载事件实现
① $(document).ready(function处理);
② $().ready(function处理);
③ $(function处理);  对第一种加载的封装而已



2.jquery加载事件与传统加载事件的区别

2.1 设置个数
在同一个请求里边,jquery的可以设置多个,而传统方式只能设置一个
    传统方式加载事件是给onload事件属性赋值,多次赋值,后者会覆盖前者。
    jquery方式加载事件是把每个加载事件都存入一个数组里边,成为数组的元素,执行的时候就遍历该数组执行每个元素即可,因此其可以设置多个加载事件。

2.2 执行时机不一样
    传统方式加载事件,是全部内容(文字、图片、样式)在浏览器显示完毕再给执行加载事件。
    jquery方式加载事件,只要全部内容(文字、图片、样式)在内存里边对应的DOM树结构绘制完毕就给执行,有可能对应的内容在浏览器里边还没有显示。


3.jquery加载事件原理
    jquery加载事件是对DOMContentLoaded的封装(而非onload)


八. 普通事件操作
① dom1级事件设置
    
    
    itnode.onclick = function(){}
    itnode.onclick = 函数;
② dom2级事件设置
    itnode.addEventListener(类型,处理,事件流);
    itnode.removeEventListener(类型,处理,事件流);
    node.attachEvent();
    node.detachEvent();
③ jquery事件设置
    $().事件类型(事件处理函数fn);     //设置事件
    $().事件类型();                     //触发事件执行
    事件类型:click、keyup、keydown、mouseover、mouseout、blur、focus等等    
例如:$(‘div’).click(function(){事件触发过程this});
(该方式事件函数内部this都代表jquery对象内部的dom节点对象)。
jquery调用的大部分方法里边的this关键字都代表其对应的dom对象。


九. jquery对文档的操作
通过jquery方式实现页面各种节点的追加、修改、删除、复制等操作
1. 节点追加
1.1 父子关系追加
主动:append(content)
prepend(content)
    

被动:
appendTo(content)
prependTo(content)



1.
    
2.
    function func(){this}
3.itnode.onclick = func;
function func(){this}
4.itnode.onclick = function (){this}

只有第二种情况this代表window,其它三种都是代表input元素节点对象

兄弟关系追加:
主动:
after(content)
before(content)

被动:
insertAfter(content)
insertBefore(content)


$("shu li:last").after("
  • xxx
  • "); $("#fei").before("
  • aaaa
  • "); 2.节点替换 replaceWith(content) $('select').replaceWith('content'); replaceAll(selector); $('content').replaceAll('select') 3.节点删除 //删除父元素的全部子元素 $('#shu').empty(); $("#wu li:first,#gai").remove(); 4.复制节点 clone([false]); //只复制对象的节点 clone([true]); //复制元素节点及其身上的对应事件; 十. 属性选择器使用 [attribute] : $("div[id]"); [attribute=value] : $("input[name=selector]"); [attribute!=value] [attribute^=value],以value值开始的元素:$("input[name^="news"]") [attribute$=value],以value值结尾的元素:$("input[name$="news"]") [attribute*=value],包含元素:$("input[name*="news"]") [selector1][selector2][selctor3]:并且选择器,需要同时满足多个条件时使用 $["input[id][name$='man']"]
    • 事件绑定
     事件绑定
    jquery事件的简单操作:
        $().事件类型(function事件处理);
        $().事件类型();
    
    1.1 jquery事件绑定
        $().bind(事件类型,function事件处理);
        $().bind(类型1 类型2 类型3,事件处理);   //给许多不同类型的事件绑定同一个处理
        $().bind(json对象);       //同时绑定多个不同类型的事件
        (事件类型:click  mouseover  mouseout  focus  blur 等等)
        事件处理:有名函数、匿名函数
    
        
        1.2 取消事件绑定
        ① $().unbind();                     //取消全部事件
        ② $().unbind(事件类型);         //取消指定类型的事件
        ③ $().unbind(事件类型,处理);      //取消指定类型的指定处理事件
    注意:第③种取消事件绑定,事件处理必须是有名函数。
    
    
    
    事件绑定是丰富事件操作的形式而已。
    
    从dom2级事件操作开始,同一个对象可以绑定多个同类型的事件,具体如下:
    dvnode.addEventListener(‘click’,fn);
    dvnode.addEventListener(‘click’,fn);
    $(‘div’).click(function);
    $(‘div’).click(function);
    
    
    2. 事件委派
    live(type,[data],fn) bind()   //后续添加的元素也会有与当前兄弟节点一样的事件
    
    die([type],func) //与live反向,绑定的事件会移除 unbind()
    
    
    3. 事件对象、阻止浏览器默认动作、阻止事件冒泡
    $().bind(‘click’,function(evt){ window.event });
    $().click(function(evt){});
    $().bind(‘mouseover’,f1);
    function f1(evt){}
    事件对象:就使用红色的evt即可,在jquery框架内部有做浏览器兼容处理。
    
    阻止浏览器默认动作、阻止事件冒泡:
        dom2级浏览器默认动作阻止:
            事件对象.preventDefault();    主流浏览器
            事件对象.returnValue = false;   IE浏览器
        dom2级事件冒泡阻止:
            事件对象.stopPropagation();    主流浏览器
            事件对象.cancelBubule = true;   IE浏览器
        
    在jquery里边:
        $().bind(‘click’,function(evt){
            evt.preventDefault();
            evt.stopPropagation();
        });
        preventDefault()方法是jquery的方法,名字与js底层代码的名字一致而已。
                     并且其有做浏览器兼容处理
        stopPropagation()方法是jquery的方法,名字与js底层代码的名字一致。
    
    
    
    • 动画效果
    1.基本动画
    show(speed,[callback])
    hide(speed,[callback])
    toggle()
    toggle(switch)
    toggle(speed,[callback]) //切换元素的可见状态
    
    2.垂直动画
    slideUp()
    slideDown()
    slideToggle()
    
    3.颜色渐变动画
    fadeIn(speed,[callback])
    fadeOut(speed,[callback])
    fadeTo(speed,opacity,[callback])
    fadeToggle(speed,[callback])
    
    
    • jquery封装的ajax
    具体操作:
    $.get(url  [,data]  [,fn回调函数]   [, dataType]);
        data:给服务器传递的数据,请求字符串 、json对象 都可以设置
        fn:回调函数,ajax请求完成后调用该函数,可以在此函数完成ajax的后续处理
        dataType:服务器返回数据类型,html、text、xml、json
        (该ajax是异步的get方式请求)
    
    $.post(url[,data][,fn回调函数][, dataType]);
        该方法与$.get()方法使用完全一致,不同的是其为post方式请求
    
    $.ajax({  //json对象
            url:请求地址,
            data:给服务器传递的数据,
            dataType:数据从服务器返回格式html、text、xml、json
            type:get/post请求方式
            success:function(){}  ajax成功请求后的回调函数,可以做后续处理使用
            async:[true]异步/false同步,
            cache:[true]缓存/false不缓存,
    }
    )
    
    
    • jquery插件开发
    什么是jquery插件
    jquery框架本身给我们提供了一些方法供使用。但是方法的数目是有限的,其不能任意满足我们对各种功能的需求。那么我们自己可以来给jquery框架开发、扩展一些额外功能方法。
    
    开发、扩展jquery框架额外方法的过程就是“插件开发”
    
    
    
    2. 两种形式丰富方法
    ①  给$.fn(给jquery对象)丰富
        $.fn.成员 = 值;
        $.fn.extend(json对象);
    ②  给$(给$对象)丰富
        $.成员 = 值;
        $.extend(json对象);
    

    你可能感兴趣的:(jQuery知识整理)