如果你已经学习过JS,那么jQuery这个JS库十分易学,从了解到熟练使用只需要很短的时间
如果你没有学习过JS,也不重要,jQuery也能上手,因为jQuery在某些程度上可以直接替代JS了
这个内容分两次更新,如果有错误和语义不明确的地方,欢迎评论指出,你的点赞和收藏是对作者原创的最好支持
如果你没有看过2天学会jQuery(day1),请移步
文章链接
jQuery给我们封装了一些动画,一些效果如淡入、淡出,滑动需要js大量代码才能实现的,在jQuery中可以很方便的调用jQuery给我们封装好的方法。
这些API不是很多,而且里面的参数都大同小异,十分易学。
show([speed,[easing],[fn]])
hide()的用法一样,show是显示,hide是隐藏,就不做介绍了
slideUp([speed,[easing],[fn]])
在设置速度的情况下,元素从可见到隐藏的过程中,会逐渐地改变其高度(这样会创造滑动效果)
通过使用滑动效果,隐藏被选元素,如果元素已显示出来的话。
滑动类动画的参数和show(),hidd()一样
淡入效果(dade(逐渐) In(进来))
渐进方式调整到指定的不透明度
参数:
当使用animate()时,必须使用Camel标记法书写所有的属性名,比如,必须使用paddingLeft而不是padding-left,使用marginRight而不是margin-right等等
hover([over,]out);
动画或效果一旦触发就会执行,如果多次触发,就会造成多个动画或者效果排队执行
加上一个stop()后不管上一次的动画有没有走完,会把上一次的动画给停止了,然后执行下一次的动画
stop()方法必须写在动画的前面,相当于停止结束上一次动画
主要针对元素的内容还有表单的值操作
普通元素内容html()(相当于原生innerHTML)
获取元素内容
//获取div元素里面的内容
$('div').html();
给元素里面添加内容
//给div元素里面添加内容
$('div').html('123
')
普通元素文本内容text()
text()//获取元素的文本内容
text('123')//设置元素的文本内容
设置获取表单值val(),(相当于原生的value)
用法一致,这里就不做过多介绍了
jQuery隐式迭代是对同一类元素做了相同的操作。如果想要给同一类元素做不同的操作,就需要用到遍历。
这个方法主要用来遍历元素
DOM元素
,不是jQuery对象这个方法还可以遍历数据,处理数据
var arr = [];
var data = {};
$.each(arr,function(i,ele){
})
$.each(data,function(i,ele){
})
动态的创建一个li标签
var li = $('我是动态创建的li ')
内部添加
$('ul').append(li);//内部添加并且放到内容的最后面,类似appendChild()
$('ul').prepend(li);//内部添加并且放到内容的前面
外部添加
element.after('内容')//把内容放入目标元素的后面
element.before('内容')//把内容放入目标元素的前面
//举个栗子
//把p元素放在class为test的DIV后面
$('.test').after(p);
删除元素
删除匹配元素本身
element.remove();
删除匹配的元素集合中所有的子节点
element.empty()
清空批评的元素内容
element.html('');
单个事件注册
$('div').click(function(){
事件处理程序
})
事件处理 on() 绑定事件
element.on(events,[selector],fn)
我们来看看看这个事件应用的各种场景
$('ul').on('click','li',function(e){
console.log(e.target.innerHTML)
})
事件是绑定在ul身上的,触发对象是li,触发了li以后会有事件冒泡,会冒泡到ul上,就会执行里面的代码了
$('div').on('click mouseover',function(){
console.log(123)
})
$('div').on({
mouseover:function(){},
mouseout:function(){},
click:function(){}
})
优势$('ol').on('click','li',function(){
alert(11)//使用on添加事件
})
var li = $('- 我是后来创建的
');
$('ol').append(li);
如果有的事件只想触发一次,可以使用one(),one()方法和on()方法的使用一样,但是one()方法使用一次就自动移除了
简单来说,如果给一个元素使用on()添加一个点击事件,点击一次可以触发,但是点击第二次就没有作用了
off()方法可以移除通过on()方法添加的事件处理程序
如果div上绑定了事件,那么点击了才会触发这个函数
$('div').on('click',function(){
alert('点击了div才会弹出')
})
或者还可以这样,在div上添加点击事件后,加上这个代码,会触发点击事件
$('div').click();
但是jQuery给我们提供了一种自动触发事件的方法
//会自动触发div上面的点击事件,同理,将click换成其他事件类型,也能触发相应的事件
$('div').trigger('click');
//这个方法和上一个方法都是一样的功能,但是不会触发元素的默认功能
$('div').triggerHandler('click');
事件被触发,就会有事件对象的产生,这里的事件对象和原生JS中的是一样的
element.on(events,[selector],function(event){})
如果想要把某个对象拷贝(合并)给另外一个对象使用,此时可以使用$.extend()方法
$.extend([deep],target,object1,[objectN])
jQuery使用$作为标识符,随着jQuery的流行,其他js库也会用这$作为标识符,这样一起使用会引起冲突。
让jQuery和其他其他的js库不存在冲突,可以同时存在,这就叫多库共存
jQuery解决方案:
语法 | 用法 |
---|---|
width()/height() | 取得匹配元素宽度和高度值,只算width/height |
innerWidth()/innerHieght() | 取得匹配元素宽度和高度值,包含padding |
outerWidth()/outerHeight() | 取得匹配元素宽度和高度值,包含padding,border |
outerWidth(true)/outerHeight(true) | 取得匹配元素宽度和高度值,包含padding,border,margin |