JavaScript库——jQuery事件及动画

本文详细介绍了jQuery中的事件处理,包括鼠标事件、键盘事件和其他事件,如click、keydown、ready等,以及事件参数和事件绑定与取消。同时,文章还探讨了jQuery动画的基础和应用,如animate()、fadeIn()、slideToggle()等,提供了丰富的示例和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事件类型

包括:

  1. 鼠标事件
  2. 键盘事件
  3. 其他事件
  4. 事件参数
  5. 事件绑定和取消

鼠标事件

click

鼠标单击时触发

$(function(){
            $('a').click(function(){
            $('img')
            .eq($(this).index())
            .css({'opacity':'1'})
            .siblings()
            .css({'opacity':'0'});
            });
});

dblclick

鼠标双击时触发
$

(function(){
        $('a').dblclick(function(){
        console.log($(this));
        $('img')
        .eq($(this).index())
        .css({'opacity':'1'})
        .siblings()
        .css({'opacity':'0'});
    });
});
  • 双击事件是由两次单击完成,所以双击事件执行的时候必定会触发单击事件。
  • 一般情况下,单击双击分开执行,不会一起执行。

mousedown

鼠标按下时触发

$(function(){
        $('a').mousedown(function(){
        console.log($(this));
        $('img')
        .eq($(this).index())
        .css({'opacity':'1'})
        .siblings()
        .css({'opacity':'0'});
    });
});

mouseup

按下鼠标松开时触发

$(function(){
        $('a').mouseup(function(){
        console.log($(this));
        $('img')
        .eq($(this).index())
        .css({'opacity':'1'})
        .siblings()
        .css({'opacity':'0'});
    });
});

mouseenter

鼠标进入时触发

$(function(){
        $('a').mouseenter(function(){
        console.log($(this));
        $('img')
        .eq($(this).index())
        .css({'opacity':'1'})
        .siblings()
        .css({'opacity':'0'});
    });
});
$(function(){
        $('nav').mouseenter(function(){
        console.log($(this));
    });
});

mouseleave

鼠标移出时触发

$(function(){
        $('a').mouseleave(function(){
        console.log($(this));
        $('img')
        .eq($(this).index())
        .css({'opacity':'1'})
        .siblings()
        .css({'opacity':'0'});
    });
});
$(function(){
        $('nav').mouseleave(function(){
        console.log($(this));
    });
});

hover (over,out)

鼠标进入和退出时触发两个函数 ,相当于mouseenter和mouseleave

$(function(){
        $('a').hover(function(){
        $('img')
        .eq($(this).index())
        .css({'opacity':'1'})
        .siblings()
        .css({'opacity':'0'});
    },function(){
        $('img')
        .eq($(this).index())
        .css({'opacity':'0'})
        .siblings()
        .css({'opacity':'1'});
    });
});

mouseover

鼠标进入指定元素及其子元素时触发

$(function(){
        $('nav').mouseover(function(){
        console.log($(this));
    });
});

mouseout

鼠标移出指定元素及其子元素时触发

$(function(){
            $('nav').mouseout(function(){
        console.log($(this));
    });
});

mousemove

在DOM内部移动时发生这个事件

$(function(){
        $('nav').mousemove(function(){
        console.log($(this));
    });
});

总结:

  1. 很多捣蛋程序通过mousemove做出来的。
  2. 拖拽文件上传用得到!

scroll

当滚动这个元素时会发生这个事件

$(function(){
            $('div').scroll(function(){
        console.log($(this));
    });
});

键盘事件

keydown

当键盘或者按钮被按下时,触发keydown事件。

$(function(){
        $(document).keydown(function(event){
        console.log(event);
    });
});
$(function(){
        $('input').keydown(function(event){
        console.log(event);
    });
});

小知识

  • clientX clientY 鼠标坐标
  • handleObj 回调函数
  • origType 事件类型
  • key 哪个键
  • keyCode AscII码对应的编码

总结:

  1. 有时候我们通过获取key值判断按下什么键
  2. 可以通过获取键位获取输入什么键
  3. 通过keycode:ASCII值判断

keyup

当按钮松开时,触发keyup事件,发生在当前获得焦点的元素上。

$(function(){
        $(document).keyup(function(event){
        console.log(event);
    });
});

总结:

  1. 现在的浏览器基本上可以使用keydown和keyup,发生在当前获得焦点的元素上
  2. 旧浏览器保留一个keypress事件

keypress

当键盘或者按钮按下时,发生keypress事件

$(function(){
        $(document).keypress(function(event){
        console.log(event);
    });
});
$(function(){
        $('input').keypress(function(event){
        console.log(event);
    });
});

总结:

  1. 独特在于必须输入内容才会触发
  2. 比如输入法、回退,Ctrl, alt不会触发的
  3. 现在版本和keypress keydown几乎没有区别

其他事件

ready()

当DOM载入就绪可以查询或者操纵时绑定一个要执行的函数

$(document).ready(function(){});
resize()   
当浏览器调整窗口大小时,触发事件
$(function(){
        $(window).resize(function(event){
        console.log(event);
    });
});

focus()

当元素获得焦点时触发事件

$(function(){
        $('input').focus(function(){
        console.log('我获得焦点了');
    });
});

blur()

当元素失去焦点时触发事件

$(function(){
        $('input').blur(function(){
        console.log('我失去焦点了');
    });
});

change()

当元素得值发生改变时,发生change事件

$(function(){
        $('input').change(function(){
        console.log('我改变了111');
    });
});

select()

当textarea或者文本类型的input文本被选择时,会发生select事件

$(function(){
        $('textarea').select(function(){
        console.log('我被选中了');
    });
});

总结:

只有可编辑的文本和文本域等可以产生select事件

submit()

当提交表单时,发生submit事件

$(function(){
        $('input[type=button]').click(function(){
      //给form绑定submit事件
        $('form').submit();
    });
});

submit具有三个功能

1. 提交表单

$(function(){
        $('input[type=button]').click(function(){
        $('form').submit();
    });
});

2. 阻止提交表单

$(function(){
        $('form').submit(function(){
        //......
        return false;
    });
});

3. 提交表单时做一些我们所需要的做的事

可以写函数 多用于表单验证

$(function(){
        $('form').submit(function(){
        var inputValue = $('input[type=text]').val();
        if (inputValue!=='www.baidu.com') return false;
    });
});

总结:

  1. button不再form就是普通按钮
  2. button在form中,相当于submit提交按钮
  3. button是html5新增的
  4. 在ie中就是普通按钮
  5. 在非ie中就是提交按钮

事件参数

event

概念:我们需要通过event获取鼠标位置和键盘位置,否则监听事件无意义
所有事件都会传入event对象作为参数,可以从event对象上获取很多信息;

$(function(){
		$(document).keydown(function(event){
		//console.log(event.keyCode);//值
      if(event.keyCode==37){
      alert('弹出左键');
      } else if (event.keyCode==39){
      	alert('弹出右键');
      }
	});
});

事件绑定和取消

on(events,[selector],[data],fn)

在选择元素上绑定一个或多个事件的事件处理函数
绑定一个事件

function flash(){
        $('.button').show().fadeOut('slow');
    }
    $('.bind').click(function(){
        $(document).on('click','.obj',flash)
        .find('.obj').text('点击按钮有效果');
    });

多个事件处理

$(function(){
        var index = 0;
    $('a').add(document).on({
        mouseenter:function(event){
            event.stopPropagation();//阻止事件的冒泡
            index=$(this).index();
            //图片切换函数
            imgChange();
        },
        keydown:function(event){
            event.stopPropagation();//阻止事件的冒泡
            console.log(event.keyCode);
            if (event.keyCode==37) {
                index=index>0?--index:$('a').length-1;
            } else if (event.keyCode==39) {
                index=index<$('a').length-1?++index:0;
            } else {
                return true;
            }
            imgChange();
        }
    });
    function imgChange(){
        $('img')
        .eq(index)
        .css({'opacity':'1'})
        .siblings()
        .css({'opacity':'0'});
    }
});

add()

方法表示将元素添加到已存在的元素组合中
语法:$(选择器).add(element,context)

off(events,[selector],[data],fn)

在选择元素上移除一个或者多个事件处理函数

function flash(){
        $('.button').show().fadeOut('slow');
    }
    $('.unbind').click(function(){
        $(document).off('click','.obj',flash)
        .find('.obj').text('这个按钮点击没有效果');
    });

one(type,[data],fn)

为每一个匹配元素的特定事件(比如click)绑定一个一次性的事件处理函数

function flash(){
        $('.button').show().fadeOut('slow');
    }
    $('.one').click(function(){
        $(document).one('click','.obj',flash)
        .find('.obj').text('次按钮可以点击一次');
});

jQuery动画基础

原理

我们只需要以固定的时间间隔(0.1秒),每次DOM元素的css样式修改一点(例如:高度,宽度增加10%),看起来就像动画。

自定义动画

animate()

概念:可以实现任意动画效果,需要传递的参数是DOM元素最终的css状态和时间。

var div = $("#test-animate");
div.animate({
        opacity:0.25,
        width:'256px',
        height:'256px
},3000);

第一个参数:{}属性变化的对象
第二个参数:动画执行的事件毫秒数

delay()

概念:方法可以实现动画暂停

var swiper = function(){
        $('div').stop()
        .animate({'width':'0%'},1000)
        .delay(3000)
        .animate({'width':'100%'},1000);
    }

动画函数

show()

直接无参形式调用show()会显示DOM元素,但是只要传递一个时间参数进去,就变成动画

var swiper = function(){
        $('img')
        .eq(index).stop()
        .show('slow')
        .siblings().hide('slow');
    }

hide()

直接无参形式调用hide () 会隐藏DOM元素,但是只要传递一个时间参数进去,就变成动画

var div = $('#test-show-hide);
div.hide(3000);//在3秒钟内逐渐消失

toggle()

根据当前状态决定是show() 和hide()

var swiper = function(){
        $('div').stop().toggle('slow');
    }

fadeIn()

动画的淡入,也就是通过不断设置DOM元素的opacity属性实现的。

var swiper = function(){
        $('img')
        .eq(index).stop()
        .fadeIn('slow')
        .siblings().fadeOut('slow');
    }

fadeOut()

动画的淡出,也就是通过不断设置DOM元素的opacity属性实现的。

var swiper = function(){
        $('img')
        .eq(index).stop()
        .fadeIn(1000)
        .siblings().fadeOut(1000);
    }

fadeToggle()

根据元素是否可见决定下一步动作

var swiper = function(){
        $('div').stop().fadeToggle('slow');
    }

slideUp()

在垂直方向逐渐的展开

var swiper = function(){
        $('img')
        .eq(index).stop()
        .slideDown('slow')
        .siblings().slideUp('slow');
    }

slideDown()

在垂直方向逐渐的收缩

var swiper = function(){
        $('img')
        .eq(index).stop()
        .slideDown(1000)
        .siblings().slideUp(1000);
    }

slideToggle()

根据元素是否可见决定下一步动作

var swiper = function(){
        $('div').stop().slideToggle('slow');
    }

总结

  • show和hide会控制宽高和透明度
  • fade不控制宽高,只会控制透明度
  • slide只控制高度以及透明度,但是不控制宽度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值