jquery简介
1.jquery是什么 ☛ 参考用法
-
jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team。
-
jQuery是继prototype之后又一个优秀的Javascript框架。其宗旨是——WRITE LESS,DO MORE,写更少的代码,做更多的事情。
-
它是轻量级的js库(压缩后只有21k) ,这是其它的js库所不及的,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。
-
jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互。
-
jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。
-
jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。
2.什么是jQuery对象?
-
jQuery 对象就是通过jQuery包装DOM对象后产生的对象。
-
jQuery 对象是 jQuery 独有的. 如果一个对象是 jQuery 对象, 那么它就可以使用 jQuery 里的方法: $(“#test”).html();
比如:
$("#test").html() 意思是指:获取ID为test的元素内的html代码。其中html()是jQuery里的方法
这段代码等同于用DOM实现代码: document.getElementById(" test ").innerHTML;
虽然jQuery对象是包装DOM对象后产生的,但是jQuery无法使用DOM对象的任何方法,同理DOM对象也不能使用jQuery里的方法.乱使用会报错
约定:如果获取的是 jQuery 对象, 那么要在变量前面加上$.
var $variable = jQuery对象
var variable = DOM对象
二 寻找元素(重要的选择器和筛选器)
2.1选择器
2.1.1 基本选择器
1 2 3 4 5 | $( "*" )
$( "#id" )
$( ".class" )
$( "element" )
$( ".class,p,div" ) //每一个选择器匹配到的元素合并后一起返回。
|
2.1.2 层级选择器
1 2 3 4 | $( ".outer div" ) //匹配所有的后代元素
$( "parent > child" ) //匹配所有的子元素
$( "prev + next" ) //匹配所有紧接在 prev 元素后的 next 元素
$( "prev ~ siblings " ) //匹配 prev 元素之后的所有 siblings 元素(同级元素)
|
2.1.3 基本筛选器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $( 'li:first' ); //获取第一个元素
$( 'li:last' ) //最后一个元素
:not(selector) //去除所有与给定选择器匹配的元素配的元素
$( "input:not(:checked)" ) //查找所有未选中的 input 元素
$( "tr:even" ) //索引为偶数的元素,从 0 开始
$( "tr:odd" ) //索引为奇数的元素,从 0 开始
$( "tr:eq(1)" ) //给定索引值的元素
$( "tr:gt(0)" ) //大于给定索引值的元素
$( "tr:lt(2)" ) //小于给定索引值的元素
$( ":focus" ) //当前获取焦点的元素
$( ":animated" ) //正在执行动画效果的元素
|
2.1.4 属性选择器
1 2 3 4 5 6 7 8 9 10 | $( "div[id]" )
$( '[id="div1"]' )
$( "div[name!='new']" )
$( "div[name^='new']" )
$( "div[name&='new']" )
$( "div[name*='new']" )
//复合:
$( '["alex="sb"][id]' )
$("div[id][name$= 'man' ]")
|
2.1.5 表单选择器
1 2 3 4 5 6 7 8 9 10 11 12 | $( ":input" ) //匹配所有 input, textarea, select 和 button 元素
$( ":text" ) //所有的单行文本框
$( ":password" ) //所有密码框
$( ":radio" ) //所有单选按钮
$( ":checkbox" ) //所有复选框
$( ":submit" ) //所有提交按钮
$( ":reset" ) //所有重置按钮
$( ":button" ) //所有button按钮
$( ":file" ) //所有文件域
$( "input:checked" ) //所有选中的元素
$( "select option:selected" ) //select中所有选中的option元素
|
2.1.6 表单对象属性选择器
1 2 3 4 | $( ":enabled" ) //匹配所有可用元素
$( ":disabled" ) //匹配所有不可用元素
$( ":checked" ) //匹配所有选中中元素
$( ":selected" ) //匹配所有选中的option元素
|
2.1.7 内容选择器
1 2 3 4 | $( ":contains(text)" ) //匹配包含给定文本的元素
$( ":empty" ) //匹配所有不包含子元素或者文本的空元素
$( ":parent" ) //匹配含有子元素或者文本的元素
$( ":has(selector)" ) //匹配含有选择器所匹配的元素的元素
|
2.1.8 可见性选择器
1 2 | $( ":hidden" ) //匹配所有不可见元素,或者type为hidden的元素
$( ":visible" ) //匹配所有的可见元素
|
2.2筛选器
2.2.1 过滤
1 2 3 4 5 | $( "p" ).eq(0) //当前操作中第N个jQuery对象,类似索引
$( 'li' ).first() //第一个元素
$( 'li' ).last() //最后一个元素
$( this ).hasClass( "test" ) //元素是否含有某个特定的类,返回布尔值
$( 'li' ).has( 'ul' ) //包含特定后代的元素
|
2.2.2 查找
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $( "div" ).children() //div中的每个子元素,第一层
$( "div" ).find( "span" ) //div中的包含的所有span元素,子子孙孙
$( "p" ).next() //紧邻p元素后的一个同辈元素
$( "p" ).nextAll() //p元素之后所有的同辈元素
$( "#test" ).nextUntil( "#test2" ) //id为"#test"元素之后到id为'#test2'之间所有的同辈元素,掐头去尾
$( "p" ).prev() //紧邻p元素前的一个同辈元素
$( "p" ).prevAll() //p元素之前所有的同辈元素
$( "#test" ).prevUntil( "#test2" ) //id为"#test"元素之前到id为'#test2'之间所有的同辈元素,掐头去尾
$( "p" ).parent() //每个p元素的父元素
$( "p" ).parents() //每个p元素的所有祖先元素,body,html
$( "#test" ).parentsUntil( "#test2" ) //id为"#test"元素到id为'#test2'之间所有的父级元素,掐头去尾
$( "div" ).siblings() //所有的同辈元素,不包括自己
|
实例 左侧菜单

demo
实例 tab切换

demo
三 操作元素(属性 CSS 和 文档处理)
3.1 属性操作
3.1.1 基本属性操作
1 2 3 4 5 6 7 8 | $( "div" ).attr( "id" ); //返回文档中所有div的id属性值
$( "div" ).attr( "id" , "4" ); //设置所有div的id属性
$( "div" ).attr({ 'alex' : 'sb' }) //设置多个属性,字典形式
$( "div" ).removeAttr( "name" ); //将文档中图像的src属性删除
$( "input[type='checkbox']" ).prop( "checked" , true ); //选中复选框
$( "input[type='checkbox']" ).prop( "checked" , false );
$( "img" ).removeProp( "src" ); //删除img的src属性
|
3.1.2 CSS类操作
1 2 3 | $( "p" ).addClass( "selected" ); //为p元素加上 'selected' 类
$( "p" ).removeClass( "selected" ); //从p元素中删除 'selected' 类
$( "p" ).toggleClass( "selected" ); //如果存在就删除,否则就添加
|
3.1.3 HTML代码/本文/值
1 2 3 4 5 6 | $( 'p' ).html(); //返回p元素的html内容
$( "p" ).html( "Hello <b>nick</b>!" ); //设置p元素的html内容
$( 'p' ).text(); //返回p元素的文本内容
$( "p" ).text( "nick" ); //设置p元素的文本内容
$( "input" ).val(); //获取文本框中的值
$( "input" ).val( "nick" ); //设置文本框中的内容
|
实例 编辑框正反选

demo
实例 模态对话框

demo
3.2 CSS操作
3.2.1 样式
1 2 3 | $( "p" ).css( "color" ); //访问查看p元素的color属性
$( "p" ).css( "color" , "red" ); //设置p元素的color属性为red
$( "p" ).css({ "color" : "red" , "background" : "yellow" }); //设置多个属性要用{}字典形式
|
3.2.2 位置
1 2 3 4 5 6 7 8 9 10 11 | $( 'p' ).offset() //元素在当前视口的相对偏移,Object {top: 122, left: 260}
$( 'p' ).offset().top
$( 'p' ).offset().left
$( "p" ).position() //元素相对父元素的偏移,对可见元素有效,Object {top: 117, left: 250}
$(window).scrollTop() //获取滚轮滑的高度
$(window).scrollLeft() //获取滚轮滑的宽度
$(window).scrollTop( '100' ) //设置滚轮滑的高度为100
$(window).height() //获取窗口的高度
$(document).height() //获取文档的高度
|
3.2.3 尺寸
1 2 3 4 5 6 7 8 9 | $( "p" ).height(); //获取p元素的高度
$( "p" ).width(); //获取p元素的宽度
$( "p:first" ).innerHeight() //获取第一个匹配元素内部区域高度(包括补白、不包括边框)
$( "p:first" ).innerWidth() //获取第一个匹配元素内部区域宽度(包括补白、不包括边框)
$( "p:first" ).outerHeight() //匹配元素外部高度(默认包括补白和边框)
$( "p:first" ).outerWidth() //匹配元素外部宽度(默认包括补白和边框)
$( "p:first" ).outerHeight( true ) //为true时包括边距
|
实例 返回顶部

demo
缓慢返回顶部(带效果):
1 2 3 | $( '#backTop' ).bind( 'click' , function (){
$( 'html,body' ).animate( {scrollTop:0} );
});
|
注:html,body需一起使用。
实例 滚动菜单

demo
3.3 文档处理
3.3.1 内部插入
1 2 3 4 | $( "p" ).append( "<b>nick</b>" ); //每个p元素内后面追加内容
$( "p" ).appendTo( "div" ); //p元素追加到div内后
$( "p" ).prepend( "<b>Hello</b>" ); //每个p元素内前面追加内容
$( "p" ).prependTo( "div" ); //p元素追加到div内前
|
3.3.2 外部插入
1 2 3 4 | $( "p" ).after( "<b>nick</b>" ); //每个p元素同级之后插入内容
$( "p" ).before( "<b>nick</b>" ); //在每个p元素同级之前插入内容
$( "p" ).insertAfter( "#test" ); //所有p元素插入到id为test元素的后面
$( "p" ).insertBefore( "#test" ); //所有p元素插入到id为test元素的前面
|
3.3.3 替换
1 2 | $( "p" ).replaceWith( "<b>Paragraph. </b>" ); //将所有匹配的元素替换成指定的HTML或DOM元素
$( "<b>Paragraph. </b>" ).replaceAll( "p" ); //用匹配的元素替换掉所有 selector匹配到的元素
|
3.3.4 删除
1 2 3 | $( "p" ).empty(); //删除匹配的元素集合中所有的子节点,不包括本身
$( "p" ).remove(); //删除所有匹配的元素,包括本身
$( "p" ).detach(); //删除所有匹配的元素(和remove()不同的是:所有绑定的事件、附加的数据会保留下来)
|
3.3.5 复制
1 2 | $( "p" ).clone() //克隆元素并选中克隆的副本
$( "p" ).clone( true ) //布尔值指事件处理函数是否会被复制
|
实例 克隆方法的应用

demo
四 事件
4.1 页面载入
当页面载入成功后再运行的函数事件 使用后可以在开头位置写入jq代码
1 2 3 4 5 6 7 8 | $(document).ready( function (){
do something...
});
//简写
$( function ($) {
do something...
});
|
4.2 事件处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | //bind 为每个匹配元素绑定事件处理函数,绑定多个用{}。 3.0+版本已弃用
$( "p" ).bind( "click" , function (){
alert( $( this ).text() );
});
$(menuF).bind({
"mouseover" : function () {
$(menuS).parent().removeClass( "hide" );
}, "mouseout" : function () {
$(menuS).parent().addClass( "hide" );
}
});
$( "p" ).click( function (){}) = $( "p" ).bind( "click" , function (){})
$( "p" ).one( "click" , fun...) //one 绑定一个一次性的事件处理函数
$( "p" ).unbind( "click" ) //解绑一个事件
|
4.3 事件委派 3.0+版本已弃用
1 2 3 4 5 6 7 | // 与bind 不同的是当事件发生时才去临时绑定。
$( "p" ).delegate( "click" , function (){
do something...
});
$( "p" ).undelegate(); //p元素删除由 delegate() 方法添加的所有事件
$( "p" ).undelegate( "click" ) //从p元素删除由 delegate() 方法添加的所有click事件
|
4.4 事件
$("p").click(); //单击事件
$("p").dblclick(); //双击事件
$("input[type=text]").focus() //元素获得焦点时,触发 focus 事件
$("input[type=text]").blur() //元素失去焦点时,触发 blur事件
$("button").mousedown()//当按下鼠标时触发事件
$("button").mouseup() //元素上放松鼠标按钮时触发事件
$("p").mousemove() //当鼠标指针在指定的元素中移动时触发事件
$("p").mouseover() //当鼠标指针位于元素上方时触发事件
$("p").mouseout() //当鼠标指针从元素上移开时触发事件
$(window).keydown() //当键盘或按钮被按下时触发事件
$(window).keypress() //当键盘或按钮被按下时触发事件,每输入一个字符都触发一次
$("input").keyup() //当按钮被松开时触发事件
$(window).scroll() //当用户滚动时触发事件
$(window).resize() //当调整浏览器窗口的大小时触发事件
$("input[type='text']").change() //当元素的值发生改变时触发事件
$("input").select() //当input 元素中的文本被选择时触发事件
$("form").submit() //当提交表单时触发事件
$(window).unload() //用户离开页面时
4.5 event object 对象
所有的事件函数都可以传入event参数方便处理事件
$("p").click(function(event){
alert(event.type); //"click"
});
(evnet object)属性方法:
event.pageX //事件发生时,鼠标距离网页左上角的水平距离
event.pageY //事件发生时,鼠标距离网页左上角的垂直距离
event.type //事件的类型
event.which //按下了哪一个键
event.data //在事件对象上绑定数据,然后传入事件处理函数
event.target //事件针对的网页元素
event.preventDefault() //阻止事件的默认行为(比如点击链接,会自动打开新页面)
event.stopPropagation() //停止事件向上层元素冒泡
实例 拖动面板

demo
解决: 拖动面板鼠标移动过快,移动断开问题
绑定在div上 鼠标移出div层 事件就消失了,绑定在 document 上也就是整个页面都有这个事件!

demo
event.clientX、event.clientY
鼠标相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不包括工具栏和滚动条。IE事件和标准事件都定义了这2个属性
event.pageX、event.pageY
类似于event.clientX、event.clientY,但它们使用的是文档坐标而非窗口坐标。这2个属性不是标准属性,但得到了广泛支持。IE事件中没有这2个属性。
event.offsetX、event.offsetY
鼠标相对于事件源元素(srcElement)的X,Y坐标,只有IE事件有这2个属性,标准事件没有对应的属性。
event.screenX、event.screenY
鼠标相对于用户显示器屏幕左上角的X,Y坐标。标准事件和IE事件都定义了这2个属性

input 输入框的change事件,要在input失去焦点的时候才会触发!
$('input[name=myInput]').change(function() { ... });
在输入框内容变化的时候不会触发change,当鼠标在其他地方点一下才会触发
用下面的方法会生效,input
$("#input_id").on('input',function(e){
alert('Changed!')
});
五 动画效果
5.1 基本 在动画完成后,可选地触发一个回调函数!
$("p").show() //显示隐藏的匹配元素
$("p").show("slow"); //参数表示速度,("slow","normal","fast"),也可为900毫秒
$("p").hide() //隐藏显示的元素
$("p").toggle(); //切换 显示/隐藏
$("p").stop() //停止所有在指定元素上正在运行的动画。
实例 显示与隐藏

demo
实例 回调函数

demo
5.2 淡入淡出 在动画完成后,可选地触发一个回调函数!
$("p").fadeIn("900"); //用900毫秒时间将段落淡入
$("p").fadeOut("900"); //用900毫秒时间将段落淡出
$("p").fadeToggle("900"); //用900毫秒时间将段落淡入,淡出
$("p").fadeTo("slow", 0.6); //用900毫秒时间将段落的透明度调整到0.6
实例 淡入淡出

demo
5.3 滑动 在动画完成后,可选地触发一个回调函数!
$("p").slideDown("900"); //用900毫秒时间将段落滑下
$("p").slideUp("900"); //用900毫秒时间将段落滑上
$("p").slideToggle("900"); //用900毫秒时间将段落滑上,滑下
实例 滑动

demo
实例 京东轮播图

demo
实例 放大镜

demo
实例 编辑框

demo
六 对象访问
$.trim() //去除字符串两端的空格
$.each() //遍历一个数组或对象,for循环
$.inArray() //返回一个值在数组中的索引位置,不存在返回-1
$.grep() //返回数组中符合某种标准的元素
$.extend() //将多个对象,合并到第一个对象
$.makeArray() //将对象转化为数组
$.type() //判断对象的类别(函数对象、日期对象、数组对象、正则对象等等
$.isArray() //判断某个参数是否为数组
$.isEmptyObject() //判断某个对象是否为空(不含有任何属性)
$.isFunction() //判断某个参数是否为函数
$.isPlainObject() //判断某个参数是否为用"{}"或"new Object"建立的对象
$.support() //判断浏览器是否支持某个特性
循环:json对象:
$.each( data, function(k,v){ .... } )
return false => break
return true => continue
判断空object对象:
function isEmptyObject(e) {
var t;
for(t in e)
return !1;
return !0;
}
七 插件扩展机制
//方式一 jQuery 可以简写成 $
jQuery.fn.extend({
hello:function(){
return $(this).text();
}
});
var index = $('.title').hello()
alert(index);
<div class="title">1111</div>
<div class="title">2222</div>
//方式二
$.extend({
hello1 :function(arg){
var index = $(arg).text();
return index;
}
})
var index = $.hello1('.title')
alert(index)
<div class="title">1111</div>
<div class="title">2222</div>
实例

demo
八 补充
1.input 事件, 输入时触发:
$('#inp').on('input',function(){});
2.文件上传input 变更时触发:
$(".upload").on("change","input[type='file']",function(){
...
});
3.ajax异步请求页面时,必须返回数据,不能在后台指定跳转页面
4.判断是否存在该标签:
5.DOM对象、JQ对象 转换
获取 Dom对象
document.getElementsTagName('div')[0]
获取 JQuery对象
$('div').first()
Dom对象 => JQuery对象
$(document.getElementsTagName('div')[0])
JQuery对象 => Dom对象
$('div').first()[0]
6.JSON 转换
JSON.parse(arg) 字符串=>原型
JSON.stringify(arg) 原型=>字符串
练习题
demo 1:左侧菜单

demo 2:tab切换

demo 3:编辑框正反选

demo 4:返回顶部

demo 5:滚动菜单

demo 6:克隆方法的应用

demo 7:模态对话框

demo 8:拖动面板

demo 9:显示与隐藏

demo 10:淡入淡出

demo 11:滑动

demo 12:京东轮播图

demo 13:放大镜

demo 14:编辑框

|