jquery教程

jquery教程

jQuery简介

 jQuery也就是JavaScript和查询(Query)即 辅助JavaScript开发的类库。
 jQuery是一个兼容多浏览器的javascript库。
 核心理念是 write less,do more (写得更少,做得更多)。
 jQuery在2006年1月由美国人John Resig在纽约的barcamp发布,吸引了来自世界各地的众多 JavaScript高手加入。
 曾经,jQuery是最流行的JavaScript库,在世界前10000个访问最多的网站中,有超过55%在使用jQuery!
 jQuery的优点:轻量级、强大的选择器、出色的DOM操作、可靠的事件处理机制、完善的Ajax、出色的浏览器兼容性、便捷的链式操作、丰富的插件支持、完善的文档、学习成本低、开源 等等
 大多数 JavaScript 类库一般都具备的特性包括:
 选择器(Selector)、DOM操作、实用函数、事件处理、Ajax等

jQuery使用

 进入jQuery官网或其他平台下载jQuery文件,并且引入页面:

 下载: http://www.jq22.com/jquery-info122

 通常每个版本号有两个版本可供下载
 生产版 - 用于实际的网站中,已被精简和压缩
 开发版 - 用于测试和开发,未压缩,是可读的代码

 注意:2.0及之后的版本,不再兼容 IE 6 7 8
 也可以引入服务器上的jQuery文件



 在jQuery库中,$ 就是jQuery的一个简写形式(别称)
 例如: $(“#nan”) === jQuery(“#nan”)

 当浏览器解析完DOM之后,执行ready小括号内的函数
$(document).ready( function () { …} )
可简写为:$(function () {…} )

在JQ中如何查找元素节点
 $(字符串)
 参数:必须css选择器形式的字符串。

JQuery_选择网页元素
 1、模拟css选择元素
   参考css选择器的参考手册
 2、独有的表达式
 3、支持多种筛选方式

JQuery的写法特点
 1、方法函数化 (基本上在JQ,基本不用=号,我们都通过函数调用的方式完成一些操作)
 2、链式操作
 3、取值赋值一体化

JQ和JS的关系
 【注】JQ是通过JS封装的,
 【注】JQ中$()调用返回的是一个JQ构造函数生成的对象。JQ对象后面只能跟JQ自己的方法。
 【结论】:JQ和JS可以共存,但是不能混用。

JQ常用的方法
 filter 过滤
 not filter的反义词
 has 拥有
 prev 找到当前节点兄弟节点中的上一个节点
 next 找到当前节点兄弟节点中的下一个节点
 find() 查找子节点
 eq(下标) 通过下标获取想要的元素
 index() 返回当前这个节点,在【兄弟节点】中的下标
 addClass 新增class样式
 removeClass 删除class样式
 val 表单元素的value值
 size() JQ,获取选择器获取到的元素节点的个数
 each 只能被JQ对象调用,进行对于我们获取到的元素遍历

获取宽的方法
 width() //width
 innerWidth()//width + padding
 outerWidth();//width+padding+border
 outerWidth(true);//width+padding+border+margin

$("button").click(function(){
    //普通获取css样式
    // alert($("#div1").css("width")); //100px
    //width
    alert("width: " + $("#div1").width());    
    //width + padding
    alert("innerWidth: " + $("#div1").innerWidth());
    //width + border + padding
    alert("outerWidth: " + $("#div1").outerWidth());
    //width + border + padding + margin
    alert("outerWidth: " + $("#div1").outerWidth(true));
})

获取高的方法
 height();
 innerHeight();
 outerHeight();
 outerHeight(true)

节点操作
 • insertBefore()//c插到a之前   before()//a之前插c
 • insertAfter()//c插到a之后      after()//a之后插c
 • appendTo()//c插到a末尾 append()//a末尾插c
 • prependTo()//c插到a前面 prepend()//a前面插c
 • remove()//找到节点,删除这个节点

//找到span节点,插入到div节点的前面
// $("span").insertBefore($("div")).css("backgroundColor", 'red');

//div前面是span
$("div").before($("span")).css("backgroundColor", 'blue');

//找到div节点,插入span节点的后面
// $("div").insertAfter($("span"));

//找到span节点,插入到div节点的子节点末尾
// $("span").appendTo($("div"));

//找到span节点,插入div节点的子节点的首位
// $("span").prependTo($("div"));

//找到节点,删除这个节点
// $("div").remove();

JQ事件
 on 绑定事件
 off 取消事件绑定
 【注】在JQ所有的事件绑定的方法,底层都是通过事件监听器封装。
 scrollTop() 获取当前页面的滚动高度

$(document).click(function(){
    alert($(window).scrollTop());
})

ev JQ兼容后的事件对象
 获取鼠标坐标
 ev.pageX ev.pageY 原点:整个文档的左上角,包含滚动高度的
 ev.clientX ev.clientY 原点:可视窗口的左上角为原点
 ev.screenX ev.screenY 原点:电脑屏幕的左上角

$(document).mousedown(function(ev){
    // alert(ev.clientX + ", " + ev.clientY);
    // alert(ev.pageX + ", " + ev.pageY);
    // alert(ev.which);
    alert(ev.screenX + "," + ev.screenY)
})

ev.which
 1、如果是在鼠标事件下 代表button
   1 左键
   2、滚轮
   3、右键
 2、如果keydown 代表是键码(不区分大小写)
 3、如果keypress 代表字符码(区分大小写)
 e.target JQ兼容后的触发对象

JQ兼容后的:
 preventDefault 阻止默认行为
 stopPropagation 阻止事件冒泡

$("a").click(function(ev){
    ev.preventDefault();
    ev.stopPropagation();
})

offset和position方法
 offset //直接距离最左边和最上边的坐标
 offset().left
 offset().top
 position //什么都算,计算距离第一个有定位的父节点的距离
 position().left
 position().top
 offsetParent()//找第一个有定位的父节点,如果没有会往上层去找,直到找到html节点为止。

$(document).click(function(){
    // alert($("#div2").offset().left);
    // alert($("#div2").offset().top);
    alert($("#div2").position().left)
    // $("#div2").parent().css("backgroundColor", 'black');  //找到父节点
    // $("#div2").parents("div").css("backgroundColor", 'black'); //找到所有祖先节点
    $("#div2").offsetParent().css("backgroundColor", 'black');
})
JQ的特效函数

1、从左上角收起和展开的特效
 • show() 显示
$("#div2").show();
 • hide() 隐藏
 第一个参数:毫秒数,动画持续的时候
 第二个参数:回调函数,动画结束的时候执行的

$("#div2").hide(2000, function(){
     $("#div1").html("移入完成");
 })

2、透明度的淡入淡出效果
 • fadeIn() fadeOut()
 • fadeTo()
 第一个参数:毫秒数,动画持续的时候
 第二个参数:透明度的数值 只能传入0~1的小数
 第三个参数:回调函数,动画结束的时候执行的

 $("#div2").fadeOut(2000, function(){
     $("#div1").html("移入完成");
 })
 $("#div2").fadeTo(2000, 0.5, function(){
    $("#div1").html("移入完成");
})

3、卷闸效果
 • slideDown() slideUp()

$("#div2").slideUp(2000, function(){
    $("#div1").html("移入完成");
})
$("#div2").slideUp(2000, function(){
    $("#div1").html("移入完成");
})

4、animate方法
 animate 动画
 第一个参数:变化的css样式和目的值
 第二个参数:动画持续的时间
 第三个参数:运动形态 支持两种运动形态
       匀速(linear) 慢块慢(默认)(swing)
 第四个参数:回调函数。
 【注】在JQ中实现链式运动,只需要在animate方法后面通过链式操作再跟animate方法就行了。
 【注】每次调用animate的方法之前,将上一次动画stop(true)一下
 delay(毫秒数) 延迟

$("#div1").hover(function(){
    $("#div2").animate({
        width: 300,
        height: "300px",
    }, 4000, function(){
        $("#div1").html("移入完成");
    })
}, function(){
    $("#div2").animate({
        width: 200,
        height: "200px",
        opacity: 1
    }, 4000, function(){
        $("#div1").html("移出完成");
    })
})

JQ和JS的关系:JQ和JS可以共存,但是不能混用
 get方法可以打破上面的界限。
 get() 需要传参下标 get方法可以将我们原有的JQ对象,转成对应的JS对象.

remove和detach,clone
 remove
 功能:删除节点
 返回值:就是被删除的这个节点,并不会保留之前的行为
var node = $("#div1").remove();

 detach
 功能:删除节点
 返回值:就是被删除的这个节点,会保留之前的行为
var node = $("#div1").detach();

 clone()
 clone(true) 既会克隆节点,也会克隆这个节点之前的行为
 功能:克隆节点
 返回值:克隆出来的新节点
var node = $("#div1").clone();

text()和ready()方法
 text() 获取标签的文本(纯文本) 类似JS中innerText
    获取该标签,和该标签子节点中纯文本内容
alert($("#div1").text());

 ready(),当整个标签加载完毕以后就执行了
$(document).ready()

 window.onload 等这个窗口上内容的加载完毕以后,再去触发这个事件

节点操作
 parents(css选择器)(获取当前节点所有的祖先节点)
 parent()(获取当前节点的父节点)
 closest() (必须传入参数,只获取从自己开始数,第一个符合条件的元素节点,包括他自己)
 siblings() 当前节点所有兄弟节点,参数也可以传入css选择器样式。
 nextAll() 当前节点开始往下所有的兄弟节点
 prevAll() 当前节点开始往上所有的兄弟节点
 parentsUntil()
 nextUntil()
 prevUntil()

 $("span.box").parent().css("backgroundColor","red")//获取当前节点的父节点
 $("span.box").parents("div").css("backgroundColor","red")//获取当前节点所有的祖先节点
 $("span").closest(".box").css("backgroundColor", 'red');
 $("span").closest("div").css("backgroundColor", 'red')
 $("#h2").siblings("h1").css("backgroundColor", 'blue')//当前节点所有兄弟节点,参数也可以传入css选择器样式。
 $("#h2").prevAll("h1").css("backgroundColor", 'blue')//当前节点开始往上所有的兄弟节点
 $("#h2").nextAll("strong").css("backgroundColor", 'blue')//当前节点开始往下所有的兄弟节点
 $("#h2").prevUntil("div").css("backgroundColor", 'orange');//a到c之间的元素,往上
 $("#h2").nextUntil("em").css("backgroundColor", 'orange');//a到c之间的元素,往下

warp包装
 wrap() 独立包装
 wrapAll() 整体包装,跟着符合条件的第一个节点
 wrapInner() 内联包装
 unwrap() 取消包装,如果有父节点,把父节点取消掉,除body以外

$("span").wrap("

"
); $("span").wrapAll("

"
); $("span").wrapInner("

"
); $("span").unwrap();

add和slice
 add() 组合css选择器
 slice(start, end) [start, end)

$("p").slice(2, 3).css("backgroundColor", 'orange');
$("p").add("span").add("button").click(function(){
    $(this).css("backgroundColor", 'red');
})

数据串联化方法
 serialize() 拼接成querystring (name1=value1&name2=value2)
 serializeArray() 拼接成 外层是数组,里面的每一个数据是对象的形式

var str = $("input").serialize();
 alert(str);
var arr = $("input").serializeArray();
alert(arr);

事件细节
 ev 就是兼容事件对象
 ev.data 实现间接传入参数
 ev.target(兼容后触发对象)
 ev.type(输出事件类型)

$("div").click(function(ev){
    alert(ev.type);
})
var node = document.getElementById("btn1");
node.onclick = function(ev){
    alert(ev);
}
$("#btn1").on("click", {username: "大牛", age: 10}, function(ev){
    alert(ev.data.username);
    alert(ev.data.age);
})

trigger
 主动触发 触发官方支持的一些事件类型以外,还支持触发一些我们自定义的事件。

  //希望能够执行按钮上的函数
$("#btn1").click(function(){
    $("#btn1").trigger("click");
})

工具方法
 JQ的方法
 格式:$().xxx() $().yyy();

 工具方法本质上,和我们自己JS封装函数没有任何区别。
 格式:$.xxx() $.yyy()

 【注】下面这些工具方法可以兼容到IE6的。
 • type() 类似于JS typeof(复合数据类型统一返回的是object)

var arr = new Array();
alert($.type(arr));
alert(typeof arr);

 • trim() 删除字符串的首尾空格
      声明成语法,ECMA5以后推出新的字符串的函数 字符串.trim();

var str = "   he l lo  ";
alert("|" + str.trim() + "|");

 • inArray()
      ECMA5以后,新增了一个数组的方法 数组.indexOf();
 • proxy() 功能类似于bind
 • noConflict()
var num = $.noConflict();
 • $.parseJSON() JSON.parse()
 • makeArray() 将伪数组转成数组。 ECMA6新推 Array.from()
nodes = $.makeArray(nodes);

JQ提供了两个插件方法,通过这两个插件方法,我们可以在不修改JQ源代码的基础,给JQ新增方法

 $.extend() 拓展JQ工具方法 $.xxx() $.yyy()

 $.fn.extend() 拓展JQ的对象方法 $().xxx() $().yyy();

$.extend({
    show: function(){
        alert("工具方法");
    }
})
$.fn.extend({
    show: function(){
        alert("JQ方法");
    }
})
$(function(){
    $("#btn1").click(function(){
        $.show();
        $("#btn1").show();
    })
})
JQ的ajax方法

ajax的load方法
 $(selector).load(url,data,callback)
 功能:将url下面的数据下载到,直接下载到的数据,填充到前面被选中元素节点的innerHTML中。
    还可以通过选择器的方式,然后进行对于填充部分的数据,进行选择。

dataType 先去声明我将要下载的数据是什么数据类型
 默认:自动检测,自动解析,解析判定方式,看下载数据的后缀
 dataType: 值
   “json” 自动将json格式字符串转成对应的数据结构
   “jsonp” 自动将ajax请求,jsonp跨域
   “text” 返回的数据,必定文本类型的字符串
   “xml” 自动解析,返回的xml数据
 【注】JQ的ajax方法可以使用dataType,指定我们的数据是什么格式

$.ajax({
    url:"url",
    type:"get/post",
    dataType:"json/jsonp/text/xml/html/script",
    data:{},
    success:function(data, textStatus, jqXHR){},
    error:funciton(XMLHttpRequest, textStatus, errorThrown){};
    jsonpCallback:"fn"
});

你可能感兴趣的:(JQ,jquery,javascript)