jQuery的使用:
jQuery对象实例对象是一个伪数组存储的
1.先引包
js的入口函数window.onload=funciton(){};是页面上的所有元素加载完毕后触发这个事件
包括音频图片,只能调用一次;
2.入口函数有三种: $(document).ready(function(){})===$(function(){})
入口函数1:
jQuery等页面中的DOM树加载完毕后就执行了不等待图片,音频的加载;
$(document).ready(function () {
alert("我是入口函数1");
});
入口函数2
jQuery(document).ready(function () {
alert("我是入口函数2");
});
入口函数3
$(function () {
alert("我是使用最多的jquery入口函数,因为我比较简单!");
});
入口函数更改版 window.onload包装成jquery入口函数
涉及到图片使用 $(window).load()
$(window).load(function () {
alert("我是入口函数3");
});
3.jQuery绑定时间不需要加on 直接用'click'事件绑定
4.jQuery和原生js的区别就是jQuery操作的是数组
获取到的元素需要添加下标来获取单一的一个元素
5.jQuery对象转换DOM对象的两种方式:
1.$('#demo')[0];
2.$('#demo').get(0);
6.jQuery无法调用js的DOM对象属性和方法要先转化为DOM元素才可以
7.jQuery的选择器
基本选择器:标签选择器('div'),类名选择器('.dv'),ID选择器('#dv')
层级选择器:后代选择器('div li'),子代选择器('ul>li');
基本过滤选择器: ('ul li:eq(index)'),(ul li:odd)从0开始奇数选择器,
(ul li:even)从0开始的偶数选择器,('ul li:last')最后一个选择器
筛选选择器(方法):.find(selector)查找后代中所有的后代元素
.children('li')查找指定元素的亲儿子,.eq(index)符合条件的元素对象的数组下标
.siblings('li')找所有的兄弟元素(不包括自己排他方法),.parent('ul')查找父元素(亲的)
css样式操作:
设置样式:
单个样式可以$(selector).css("color","red")
多个样式操作使用对象添加$(selector).css({"color":"red","font-size":"30px"})
获取样式:
$(selector).css("color")
类样式的操作:
1.hasClass('current') 判断是否存在类
2.addClass('current') 添加类
3.removeClass('current') 删除类
$(selector).removeClass(); 不指定参数,表示移除被选中元素的所有类
4.toggleClass('current') 切换类
动画之隐藏和显示:
1.$(selector).show(1000); // 1000表示什么?
$(selector).show(“slow”);
$(selector).show(1000, function(){});
$(selector).show();
2.$(selector).hide(1000); // 1000表示什么?
$(selector).hide(“slow”);
$(selector).hide(1000, function(){});
$(selector).hide();
3.$(selector).toggle(1000); // 1000表示什么?
$(selector).toggle(“slow”);
$(selector).toggle(1000, function(){});
$(selector).toggle();
动画之滑入滑出:
1.滑入 $(selector).slideDown(speed,callback);
2.滑出 $(selector).slideUp(speed,callback);
3.滑入滑出切换 $(selector).slideToggle(speed,callback)
动画之淡入淡出:
1.淡入 .fadeIn(speed,callback)
2.淡出 .fadeOut(speed,callback);
3.切换淡入淡出 .fadeTogggel(speed,callback)
4. .fadeTo(时长,不透明的值0.5)改变透明度到某个值:
动画之自定义动画:
1.animate({params},speed,function(){})
注意:所有能够执行动画的属性必须只有一个数字类型的值。
比如:要改变字体大小,要使用:fontSize(font-size),不要使用:font
动画之停止动画:
1.stop(boolean,boolean):
// 第一个参数表示后续动画是否要停止
//(true:后续动画不执行 ;false:后续动画会执行)
// 第二个参数表示当前动画是否执行完完毕
//(true:立即执行完成当前动画 ;false:立即停止当前动画)
常用方式:$(selector).stop();
节点操作:
1.父元素.append(子元素) 在元素的最后一个子元素后面追加元素
作用:在被选元素内部的最后一个子元素(或内容)后面插入内容(存在或者创建出来的元素都可以)
如果是页面中存在的元素,那么调用append()后,会把这个元素放到相应的目标元素里面去;但是,原来的这个元素,就不存在了。
如果是给多个目标追加元素,那么方法的内部会复制多份这个元素,然后追加到多个目标里面去。
2.子元素.appendTo(父元素)
3.prepend()
作用:在元素的第一个子元素前面追加内容或节点
$(selector).prepend(node);
3 after()
作用:在被选元素之后,作为兄弟元素插入内容或节点
$(selector).after(node);
4 before()
作用:在被选元素之前,作为兄弟元素插入内容或节点
$(selector).before(node);
html创建元素:html()添加元素会覆盖
// 动态创建元素
$(selector).html(‘传智播客’);
// 获取html内容
$(selector).html();
清空元素和删除元素
// 清空指定元素的所有子元素(光杆司令)
// 没有参数
$(selector).empty();
$(selector).html(“”);
// “自杀” 把自己(包括所有内部元素)从文档中删除掉
$(selector).remove();
复制匹配的元素:
// 复制$(selector)所匹配到的元素
// 返回值为复制的新元素
$(selector).clone();//和参数无关只能深层复制
属性节点操作:
attr是操作属性节点 及html中带的节点 (如 class height src href 等)
设置属性节点得值:
$(selector).attr("title","创智博客")
获取属性的值
$(selector).attr("title");
移除属性:
$(selector).removeAttr("title");
prop是操作元素的属性的
注意:checked、selected、disabled要使用.prop()方法。
值和内容:
获取的就是元素的value的属性值
1.val()方法: 大部分用在表单元素的默认值
作用:设置或返回表单元素的值,例如:input,select,textarea的值
设置所有匹配的元素的值
$(selector).val("具体值");
只获取第一个元素的值
$(selector).val();
2.html()方法:
html():只获取第一个匹配元素的html内容
html(val):设置每一个匹配元素的html内容。
3.text()方法:
text()获取所有匹配元素的内容
(注意:这时候会把所有匹配到的元素内容拼接为一个字符串,不同于其他获取操作!)
text(val):设置所有的匹配元素的内容
宽度和高度的操作:
设置高度和宽度:
$(selector).height(200) ||.width(200);
获取高度:
$(selector).height() ||.width();
css()获取的高度带单位 是字符串类型的
.height()获取的高度是number类型的不带单位可以直接参与运算
坐标值的操作:
offset()
作用:获取或设置元素相对于文档的位置
// 无参数表示获取,返回值为:{left:num, top:num},值是相对于document的位置
$(selector).offset();
// 有参数表示设置,参数推荐使用数值类型
$(selector).offset({left:100, top: 150});
注意点:设置offset后,如果元素没有定位(默认值:static),则被修改为relative
position()
作用:获取相对于其最近的具有定位的父元素的位置。
// 获取,返回值为对象:{left:num, top:num}
$(selector).position();注意:只能获取,不能设置。
scrollTop()
作用:获取或者设置元素垂直方向滚动的位置
// 无参数表示获取偏移
// 有参数表示设置偏移,参数为数值类型
$(selector).scrollTop(100);
scrollLeft()
作用:获取或者设置元素水平方向滚动的位置
$(selector).scrollLeft(100);
对scrollTop的理解:
垂直滚动条位置 是可滚动区域 在 可视区域上方的 被隐藏区域的高度。
如果滚动条在最上方没有滚动 或者 当前元素没有出现滚动条,那么这个距离为0
事件绑定:
1.bind("click mouseenter",function(){})(不推荐,1.7以后的jQuery版本被on取代)
缺点:要绑定事件的元素必须存在文档中。
2.$(".parentBox").delegate("p", "click", function(){
//为 .parentBox下面的所有的p标签绑定事件
});
与前两种方式最大的优势:减少事件绑定次数提高效率,支持动态创建出来的元素绑定事件!
3.on()方式
例如:
1.// 表示给$(selector)绑定事件,当必须是它的内部元素span才能执行这个事件
$(selector).on( "click",“span”, function() {});
2.// 绑定多个事件
// 表示给$(selector)匹配的元素绑定单击和鼠标进入事件
$(selector).on(“click mouseenter”, function(){});
事件解绑:
unbind()方式:
$(selector).unbind(); //解绑所有的事件
$(selector).unbind(“click”); //解绑指定的事件
undelegate()方式:
$( selector ).undelegate(); //解绑所有的delegate事件
$( selector).undelegate( “click” ); //解绑所有的click事件
off()方式:
$(selector).off();// 解绑匹配元素的所有事件
$(selector).off(“click”);// 解绑匹配元素的所有click事件
事件触发:
1.简单事件触发:
$(selector).click();//触发click事件
2.trigger方法触发事件
$(selector).trigger("click");
3.triggerHandler触发事件响应方法,不触发浏览器行为,
比如:文本框获得焦点的默认行为
$(selector).triggerHandler("focur");
jQuery事件对象介绍
event.data 传递给事件处理程序的额外数据
event.currentTarget 等同于this,当前DOM对象
event.pageX? 鼠标相对于文档左部边缘的位置
event.target? 触发事件源,不一定===this
event.stopPropagation();阻止事件冒泡
event.preventDefault();?阻止默认行为
event.type 事件类型:click,dbclick…
event.which 鼠标的按键类型:左1 中2 右3
event.keyCode 键盘按键代码
链式编程
原理:return $(this);
end();结束当前链最近的一次过滤操作,并且返回匹配元素上一次的状态。
each()方法:
// 参数一表示当前元素在所有匹配元素中的索引号
// 参数二表示当前元素(DOM对象)
$(selector).each(function(index,element){});
多库共存:
解决方式:释放jQuery对$和jQuery变量的控制权限
例如:
$.noConflict();
//打印当前jQuery的版本号
console.log($.fn.jquery);//1.8.2
console.log(jQuery.fn.jquery);//1.11.1
//jquery1.11.1放弃了两个操作符的权限,然后自定义一个操作符。
// var MrLv = $.noConflict(true);
第三方插件:
Query.color.js
animate()自定义动画:不支持背景的动画效果
animate动画支持的属性列表
jQuery.lazyload.js
使用步骤:
1.引入jQuery文件
2.引入插件
3.使用插件
制作插件:
jQuery对象扩展方法
$.fn. pluginName = function(){};