jQuery
是一个类库,提供强大的选择器,不用考虑兼容性问题,进行DOM操作,动画功能,以及Ajax
jQuery 1点几版本 兼容IE6~8 而2-3的版本不兼容
原生对象与jQuery对象的转化
原生——>jq:oDiv——>$(oDiv)
jq——>原生: $div1——>$div.get(0)
文档就绪函数
一般jq都写在文档就绪函数里
$(document).ready(function(){})
$().ready(funcyion(){})
$(function(){})//一般用第三个
绑定事件最好都用on
$(selector).on('事件类型',function(){})
选择器
pre+next
紧跟在其后的一个元素
pre~siblings
其所有的兄弟元素
:eq()
下标从0开始,-1指倒数第一个
:even 偶数/:odd 奇数
下标从0开始
:gt() 大于/:lt() 小于
下标从0开始
:header
选中h1-h6的元素
:not()
括号里面是一个选择器,去除它
:root()
永远是HTML
:target
一般与用于锚点
:contains()
选择所有包含指定文本的元素,区分大小写
可以适用于输入框输入信息时的筛选
:empty
选中内容为空的
:parent
找其子元素不为空的元素,==与empty相反==
:animated
选中正在执行动画的元素
:hidden
元素被认为隐藏的几个情况:
display:none
type="hidden"的表单元素
宽度和高度为0
祖先元素被隐藏,则该元素不会在页面上显示
注:visibility:hidden或opacity:0被认为可见(因为仍然占据空间)
:first-child/:first-of-type
first-child 选中第一个孩子
first-of-type 选中第一次出现的元素
:nth-child()
整个括号里的索引从1开始
一般适用于找规律
属性
.attr()/.prop()
获取属性
==注:若检查或更改DOM属性,如checked, selected, 或 disabled的情况下只能用.prop()==
.val()
获取value值,主要与用于input
拓:defaultValue 默认值
.css
$div1.css('background','red')//只给对象设置一个属性
$div1.css)({
backgroundColor:'red'
})//给对象设置多个属性
$div1.css)('width',function(){
//...
return...
}//给对象设置的属性是个变量
.addClass()/.removeClass()
添加样式
.hasClass()
可以判断当前样式是否存在
.toggleClass()
切换样式
.width()/.innerWidth()/.outerWidth()
.width() 只包含内容
.innerWidth() 只包含内容和padding
.outerWidth() 包含内容,padding和border
.outerWidth(true) 包含内容,padding,border和margin
.offset()/.position()/.offsetParent
.offset() 相对于文档的位置
.position() 相对于最近的已经定位的祖先元素的位置
.offsetParent 最近的已经定位的祖先元素的对象
注:只有offset能赋值,其他只能取值
.scrollTop() /.scrollLeft()
距离原始滚动条的位置
操作
.clone()
是实现深拷贝
.append()/.appendTo()
.append() 父元素追加子元素
.appendTo() 子元素追加到父元素
注:都在内容的最后插入
.prepend()/.prependTo()
类append,只是在内容的前面插入
.wrap()/.wrapAll()/.wrapInner()
xx.wrap(yy) 在每个xx外包含一个yy
xx.wrapAll(yy) 在所有的xx外只包一个yy
xx.wrapInner(yy) 在每个xx里包一个yy
.text()/.html()
.text() 当作文本输出
.html() 当作HTML标签输出
.after()/.insertAfter()/.before()/.insertBefore()
xx.after(yy) 在这之后插入 xx.after(yy)=yy.insertAfter(xx)
.before() 在这之前插入
.empty()
清空内容,与:empty不一样
.replaceAll()/.replaceWith()
('<>>').replaceAll($())
$().repaceWith('<>>')
注:两者功能一样,但前后顺序不一样
遍历
.eq()
同:eq()功能一样,只不过一个是方法,一个是选择器
.filter()
过滤
.add()
添加具有同样样式的元素
.each(index,elem)
遍历每个元素,不需要考虑下标
.children()/.find()
.children() 只找亲儿子
.find() 找它的子孙后代
.end()
返回链式操作的上一级
.addBack()
将前一个元素添加到当前集合中
.closest()/.parents()
.closest()
.parents()
开始于当前元素
开始于父元素
在 DOM 树中向上遍历,直到找到与提供的选择器相匹配的元素(找到一个不再找了)
向上遍历DOM树到文档的根元素,每个祖先元素加入到临时集合,如果提供一个选择器,则会使用该选择器在集合中进行过滤(会一直找找到文档的根元素)
返回包含零个或一个元素的jQuery对象
返回包含零个,一个或多个元素的jQuery对象
.next()/.nextAll()/.nextUntil
.next() 找到下一个
.nextAll() 找到下面所有
.nextUntil() 找到···直到···
prev()/prevAll()/prevUtil()同上
找前一个
.parent()/parentUnit()同上
找父元素
.sublings()
找他前后的兄弟
事件
.on()/.off()
.on() 绑定事件
.off() 移除事件
注:绑定或移除事件必须是同一个方法
mouse
.mouseover()/.mouseout()
.mouseenter()/.mouseleave()
有事件冒泡
没有事件冒泡(不是原生事件)
focus
.focus()/.blur()
.focusin()/.focusout()
默认不会事件冒泡
没有事件冒泡(不是原生事件)
.hover()
鼠标的划入划出
相当于mouseenter和mouseleave,所以不支持事件冒泡
$('#div1').hover(function(){
console.log('over')
},function(){
console.log('out')
})
e.target/e.currentTarget/e.stopProgation()
e.target 事件源
通常用e.target和this比较,来判断事件是不是由于冒泡而触发的,经常用于事件冒泡时处理事件委托
e.currentTarget总是等于this
e.stopProgation() 防止事件冒泡
if(e.target==this){
console.log('不是事件冒泡触发的')
}else{
console.log('是事件冒泡触发的')
}
e.pageX/e.pageY
获取鼠标坐标
e.which
是键盘码, 将 event.keyCode 和 event.charCode 标准化了,没有兼容性问题
动画
.show()/.hide()
改变高度、宽度、透明度;
可以设置事件,单位毫秒 show(5000)
.toggle()
来回切换show和hide
.fadeIn()/.fadeOut()/.fadeTo()/.fadeToggle()
淡入/淡出
只改变透明度
.fadeTo() 淡入到
.fadeToggle() 来回淡入淡出
.slideUp()/.slideDown()/.slideToggle()
像帘子一样收起放下
只改变其高度
.animate()
第一个参数 对象
第二个参数 时间
第三个参数 动画效果(自身提供linear匀速 ,swing先慢后快(默认))
第四个参数 回调函数
注:不能设置改变背景颜色
以上效果的例子
Document
#div1{
width: 500px;
height: 500px;
background: #ff0000;
position: relative;
left:0;
top: 0;
}
hide
show
toggle
fadeIn
fadeOut
fadeToggle
slideDown
slideUp
slideToggle
animate
:animated
$(function () {
var $div1 = $('#div1');
$('#hide').on('click', function(){
$div1.stop().hide(5000);
});
$('#show').on('click', function(){
$div1.stop().show(5000);
});
$('#toggle').on('click', function(){
$div1.toggle(2000);
});
$('#fadeIn').on('click', function(){
$div1.fadeIn('slow');
});
$('#fadeOut').on('click', function(){
$div1.fadeOut('fast');
});
$('#fadeToggle').on('click', function(){
$div1.fadeToggle(1000);
});
$('#slideDown').on('click', function(){
$div1.slideDown(1000);
});
$('#slideUp').on('click', function(){
$div1.slideUp(1000);
});
$('#slideToggle').on('click', function(){
$div1.slideToggle(1000);
});
$('#animate').on('click', function(){
$div1.animate({
width: 800,
opacity: .5,
left: 100
}, 1000, 'easeOutBounce', function(){
console.log('over');
});
});
$('#animated').on('click', function(){
$('#div1:animated').css('background', 'green');
});
});
注:jQuery 的动画插件 jQuery.easing.js,若使用必须在前面先引入jQuery文件
.stop()
停止动画
第一个参数 布尔值 指是否取消已列队动画。默认false
第二个参数 布尔值 指是否立即完成当前动画。默认false
注:一般在执行动画时,前面先写stop
stop
#box {
background: #f00;
height: 100px;
width: 100px;
position: relative;
}
stop运动参数测试
$(function () {
var $box = $("#box");
$("#start").on("click", function () {
$box.animate({
height: 500
}, 5000);
$box.animate({
width: 500
}, 5000);
$box.animate({
height: 100
}, 5000);
$box.animate({
width: 100
}, 5000);
});
// 点击不同的button执行不同的操作
$('#button1').click(function () {
//默认参数是false,不管写一个false还是两个false还是没写false效果一样
$box.stop();
});
$('#button2').click(function () {
//第二个参数默认false
$box.stop(true);
});
$('#button3').click(function () {
$box.stop(false, true);
});
$('#button4').click(function () {
$box.stop(true, true);
});
})
核心
$.extend()
将两个对象的内容合并第一个对象
var obj1 = {
name: 'zhangsan'
};
var obj2 = {
name: 'lisi',
age: 18
};
$.extend(obj1, obj2);
console.log(obj1);
输出 name:lisi age:18
$(selector).load()
加载代码段
注:加载为空 就会加载自己出现死循环