jQuery还为我们封装了很多实用的函数及一些常见却在原生中没有的事件:
原有的domReady事件也有了新的写法:
$(document).ready(function(){
//code
});
//更常用的简单写法:
$(function(){
//code
})
常见的hide() show()
代替了以往我们所用的display:none/block;
样式;
jQuery中的添加的 toggle 事件,绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click 事件,例如:
//采用连续点击事件替代 原生代码中点击按钮使div显示隐藏不可或缺的if判断
$('input').toggle(function(){
$('div').hide();
},function(){
$('div').show();
});
CSS中用过的 hover 我们也能用jQuery代码实现:
$('#btn').hover(function(){
//鼠标移入的执行函数
},function(){
//鼠标移出的执行函数
});
再如一些fadeIn()/fadeOut()
淡入淡出,sildeDown()/sildeUp()
下拉收起等动画效果,也能直接实现,但是不建议直接使用,因为当短时间内连续触发事件后这些函数将累积起来连续执行,这可不是我们想看到的,这时不得不提到 stop() 函数中止当前动画,解决上面提到的问题。
而且jQuery中的 animate() 函数能完美的到达以上效果并且可以再此上定制自己想要的效果,这时也不能忘在每个animate()
前加上stop()
函数;
animate(params,[speed],[easing],[fn])
//params:一组包含作为动画属性和终值的样式属性和及其值的集合
//speed:三种预定速度之一的字符串("slow","normal", or "fast")
或表示动画时长的毫秒数值(如:1000)
//easing:要使用的擦除效果的名称(需要插件支持).默认jQueryti提供"linear" 和 "swing"
//fn:在动画完成时执行的函数,每个元素执行一次。
animate()
函数是通过原生运动框架实现的,所以动画属性必须有数字化的初始值与终值,若要修改譬如颜色等样式,需插件支持。
最后要提到对象的问题:原生对象,不能用jQuery的方法的操作;jQuery对象也不能用原生的方法操作。但是两者间可以互相转化:
把jq对象转成原生对象:$('div')[0]
把原生对象转成jq对象:$(oDiv)
另外在jQuey里,this,通常情况下(在多数情况下),指的是原生对象(而不是jQuery对象),写法为$(this)
。