jQuery 事件及动画

jQuery 事件

  • jquery中的事件是将事件名作为方法名,传入回调函数即可。
$("div").click(function(){
    
    
});
$("div").mouseover(function(){
    
    
});

加载事件

  • 在原生js中的页面加载事件是window.onload

推荐使用jquery的页面加载事件,jquery的页面加载要比js原生的写法效率高,因为js元素的页面加载事件需要等到页面中的所有资源加载完毕才执行,而jquery的页面加载事件只需要等到页面的标签加载完毕就执行,而不会等待外部文件加载。

  • 在jquery中有两种写法:
$(function(){
    
    
});
$(document).ready(function(){
    
    
});

元素事件

on方法

  • 用于绑定事件、委托事件、传入参数
  • 语法:$(元素).on(事件类型,[委托的子元素],[传入的参数],处理的函数);
// 给 button 按钮绑定一个点击事件
$('button').on('click', function () {
    
    
    console.log('我被点击了')
})

// 给 button 按钮绑定一个点击事件,并且携带参数
$('button').on('click', {
    
     name: 'Jack' }, function (e) {
    
    
    console.log(e) // 所有的内容都再事件对象里面
    console.log(e.data) // { name: 'Jack' }
})

// 事件委托的方式给 button 绑定点击事件
$('div').on('click', 'button', function () {
    
    
    console.log(this) // button 按钮
})

// 事件委托的方式给 button 绑定点击事件并携带参数
$('div').on('click', 'button', {
    
     name: 'Jack' }, function (e) {
    
    
    console.log(this) // button 按钮
    console.log(e.data)
})

off方法

  • 用于解绑事件
  • 语法:$(元素).off(事件类型,处理函数)
// 给 button 按钮绑定一个 点击事件,执行 handler 函数
$('button').on('click', handler)

// 移除事件使用 off
$('button').off('click', handler)

trigger方法

  • 用于手动触发事件:
  • 语法:$(元素).trigger(事件类型,处理函数)
// 当代码执行到这里的时候,会自动触发一下 button 的 click 事件
$('button').trigger('click')

one方法

  • 只能触发一次的事件:
  • 语法:$(元素).one(事件类型,处理函数);
// 这个事件绑定再 button 按钮身上
// 当执行过一次以后就不会再执行了
$('button').one('click', handler)

常用事件

click事件

  • 鼠标点击所触发的事件
  • 语法:$("元素").click(处理函数)
// 直接给 div 绑定一个点击事件
$('div').click(function () {
    
    
    console.log('我被点击了')
})

// 给 div 绑定一个点击事件并传递参数
$('div').click({
    
     name: 'Jack' }, function (e) {
    
    
    console.log(e.data)
})

dbclick事件

  • 鼠标双击所触发的事件
  • 语法:$("元素").dbclick(处理函数)
// 直接给 div 绑定一个双击事件
$('div').dblclick(function () {
    
    
    console.log('我被点击了')
})

// 给 div 绑定一个双击事件并传递参数
$('div').dblclick({
    
     name: 'Jack' }, function (e) {
    
    
    console.log(e.data)
})

scroll事件

  • 页面滚动所触发的事件
  • 语法:$("元素").scroll(处理函数)
// 直接给 div 绑定一个滚动事件
$('div').scroll(function () {
    
    
    console.log('我被点击了')
})

// 给 div 绑定一个滚动事件并传递参数
$('div').scroll({
    
     name: 'Jack' }, function (e) {
    
    
    console.log(e.data)
})

hover事件

  • 鼠标放上去和鼠标离开所触发的事件
  • 语法:$("元素").hover(鼠标放上去的处理函数,鼠标离开的处理函数)
// 这个事件要包含两个事件处理函数
// 一个是移入的时候,一个是移出的时候触发
$('div').hover(function () {
    
    
    console.log('我会再移入的时候触发')
}, function () {
    
    
    console.log('我会在移出的时候触发')
})

jQuery 动画

基本动画

1. 显示(show)

  • 语法:元素.show();
  • 让元素从隐藏状态变为显示状态(从display:none;变为 display:block;)
  • 可选参数1:时间,毫秒数 == 让元素在规定的时间内显示(操作的属性有很多)
  • 可选参数2:速度方式,匀速或加速或减速
  • 可选参数3:动画结束后执行的回调函数
// 给 div 绑定一个显示的动画
$('div').show() // 如果元素本身是 display none 的状态可以显示出来

// 给 div 绑定一个显示的动画
// 接受三个参数
// $('div').show('毫秒', '速度', '回调函数') 
$('div').show(1000, 'linear', function () {
    
    
    console.log('我显示完毕')
}) 

2. 隐藏(hide)

  • 语法:元素.hide();
  • 让元素从显示状态切换到隐藏状态
  • 可选参数和show一样
// 给 div 绑定一个隐藏的动画
$('div').hide() // 如果元素本身是 display block 的状态可以隐藏起来

// 给 div 绑定一个显示的动画
// 接受三个参数
// $('div').show('毫秒', '速度', '回调函数') 
$('div').hide(1000, 'linear', function () {
    
    
    console.log('我隐藏完毕')
}) 

3. 切换显示隐藏(toggle)

  • 语法:元素.toggle();
  • 让元素在隐藏和显示状态切换
  • 可选参数和show一样
// 给 div 绑定一个切换的动画
$('div').hide() // 元素本身是显示,那么就隐藏,本身是隐藏那么就显示

// 给 div 绑定一个显示的动画
// 接受三个参数
// $('div').show('毫秒', '速度', '回调函数') 
$('div').toggle(1000, 'linear', function () {
    
    
    console.log('动画执行完毕')
}) 

4. 元素上下拉到隐藏显示

  • 语法:
元素.slideDown() // 让元素向下拉动显示
元素.slideUp() // 让元素向上拉动隐藏
元素.slideToggle() // 让元素切换上下拉动显示隐藏
参数和show一样

5. 元素透明度显示隐藏

  • 语法:
元素.fadeIn() // 让元素从透明度0变为1的显示
元素.fadeOut() // 让元素从透明度1变为0的隐藏
元素.slideToggle() // 让元素切换透明度显示隐藏
参数和show一样

6. 让元素切换到指定的透明度

  • 语法:
元素.fadeTo(毫秒数,透明度,速度方式,结束的回调函数) // 让元素在指定的时间内切换到指定的透明度

自定义动画

开启动画

元素.animate({
    
    
    css属性名:属性值,
    css属性名:属性值,
    。。。
}[,毫秒数][,速度方式][,执行结束的回调函数]);
// 定义一个自定义动画
$('.show').click(function () {
    
    
    $('div').animate({
    
    
        width: 500,
        height: 300
    }, 1000, 'linear', function () {
    
    
        console.log('动画运动完毕')
    })
})

停止动画

元素.stop(); // 将动画停止在当前状态
元素.finish(); // 将动画停止在结束状态
// 立刻定制动画
$('div').stop() // 就停止再当前状态
// 立刻结束动画
$('div').finish() // 停止在动画结束状态

动画的链式操作

通常在一个动画中的所有css属性是同时进行的,想要将所有动画按顺序执行的话,可以将多个动画嵌套在动画结束的回调函数中,但是这样容易造成回调地狱,所以jquery提供了一个动画的链式操作,让所有动画组成一个队列,按顺序执行,例:

<style>
div{
     
     
    width: 100px;
    height:100px;
    background-color: red;
    position:absolute;
}
</style>
<body>
	<button class="start">按钮</button>
	<div></div>
</body>
<script src="./js/jquery.js"></script>
<script type="text/javascript">
$(".start").click(function(){
     
     
    $("div").animate({
     
     
        left:"300px"
    }).animate({
     
     
        top:"300px"
    }).animate({
     
     
        width:"300px"
    }).animate({
     
     
        height:"50px"
    })
});
</script>

猜你喜欢

转载自blog.csdn.net/qq_45677671/article/details/114294997
今日推荐