jQuery 的事件操作

事件

页面加载

DOM 中提供了 load 事件用于加载页面完毕之后的执行机制,jQuery 提供了 ready() 方法实现相似功能。但 DOM 中的 load 事件与 jQuery 中的 ready() 方法的区别如下表所示:

DOM 中的 load 事件:jQuery 中的 read() 方法:
没有任何简写形式具有简写形式
当 HTML 页面加载完毕之后触发 load 事件当 DOM 节点述加载完毕之后调用 ready() 方法
一个 HTML 页面仅允许存在一个 load 事件一个 HTML 页面允许存在多个 ready() 方法

jQuery 提供了 ready() 方法,来实现类似于 window.obload 事件的功能。当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。

$(document).ready(function(){
  // 在这里写你的代码...
});

其中 $(document).ready() 可以进行简写为:

// 1
$().ready(function(){

})
// 2
$(function($) {
  // 你可以在这里继续使用$作为别名...
});

事件绑定

1. 单事件绑定:

jQuery 中提供了 bind()unbind() 方法完成事件绑定与解绑功能,具体语法如下:

$element.bind(type,data,callback);

$element.unbind(type[,data.callback]);
// 这里的 type 用于删除含有一个事件类型的字符串
  • type:含有一个事件类型的字符串
  • data:作为 event.data 属性值传递给事件对象的额外数据对象
  • callback:绑定到每个匹配元素的事件上面的处理函数

用法示例:

// 一个事件可以绑定多个方法
$('#btn').bind('click',function(){
    console.log('this is button.');
});
$('#btn').bind('click',function(){
    console.log('this is button too.');
});

如下图所示:
https://gitee.com/project_almanac/change/raw/master/jQuery/LKHXfABw@vga.png

unbind(type,data,callback) 方法用于解绑事件,在使用过程中存在两种情况:

  • 如果只传递事件名称的话,解绑定该事件的所有处理函数
$('#btn').bind('click',function(){
    console.log('this is button.');
});
$('#btn').bind('click',function(){
    console.log('this is button too.');
});

$('#btn').unbind('click',);
  • 如果传递事件名称和指定的处理函数的话,解绑定该事件的指定处理函数

用法示例:

function click1(){
    console.log('this is button.');
}
function click2(){
    console.log('this is button too.');
}
$('#btn').bind('click',click1);
$('#btn').bind('click',click2);

$('#btn').unbind('click',click1);

2. 多事件绑定

bind() 方法,多事件绑定,事件名称之间使用空格分隔

用法示例:

// 鼠标悬停事件
// * mouseover 表示鼠标悬停在指定元素之上
// * mouseout 表述鼠标从指定元素上移开
$('#title').bind('mouseover mouseout',function(){
    if($('ul').is(':hidden')){
        $('ul').css('display','block')
    } else {
        // $('ul').hide();
        $('ul').css('display','none')
    }
})

多事件绑定的 unbind() 方法分为三种情况:

  1. 没有指定任何事件时,将指定元素的所有事件全部解绑
  2. 指定一个事件名称时,将指定元素的指定当个事件解绑
  3. 指定多个事件名称时,将指定元素的指定多个事件解绑

3. 事件绑定方法对比

jQuery 由于版本不同,完成事件绑定的方法不仅 bind() 方法,还有以下几种方法:

  • one(type[,data,fn]) 方法:为每一个匹配元素的特定事件绑定一个一次性的事件处理函数
  • bind(type[,data,fn]) 方法:为每个匹配元素的特定事件绑定事件处理函数
  • on(events,[selector],[data],fn) 方法:为每个匹配元素绑定一个或多个事件的事件处理函数。jQuery 1.7 版本新增方法
  • live(type[,data],fn) 方法:该方法可实现事件委托效果。jQuery 1.7 版本该方法被移除
  • delegate(selector[,type][,data],fn) 方法:该方法可实现事件委托效果。jQuery 1.6 版本新增方法

jQuery 中提供多组事件绑定与解绑定的方法:

  • bind()unbind() jQuery 3.0 版本后删除方法
  • on()off() 方法 jQuery 1.7 版本后新增方法
    • bind()unbind() 的底层方法就是 on()off()
  • live()die() jQuery 1.7 版本后删除方法
    • 作用:实现事件委托
  • delegate()undelete() - jQuery 1.6 版本后新增方法,jQuery 3.0 版本后删除方法
    • 作用:实现事件委托
  • one() 为事件绑定一次性的函数

事件切换

jQuery 提供了 hover() 方法模拟鼠标悬停事件效果,具体语法如下:

$element.hover([over,]out);
  • over:鼠标移到元素上要触发的函数
  • out:鼠标移出元素要触发的函数

用法示例:

$('#title').hover(function(){
    $('ul').css('display','block');
},function(){
    $('ul').css('display','none');
});

jQuery 提供了 toggle() 方法用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click 事件。具体语法如下:

$element.toggle(fn,fn2[,fn3,fn4,...]);
  • fn:第一数次点击时要执行的函数
  • fn2:第二数次点击时要执行的函数
  • fn3,fn4,… :更多次点击时要执行的函数

说明:需要注意的是在 1.9 版本这个方法发生了变化,不再是事件切换的方法而是变成了动画方法。

事件模拟(trigger()

jQuery 提供了 trigger() 方法用于模拟触发匹配元素绑定的事件,具体语法如下:

$element.trigger(type[,data]);
  • type:一个事件对象或者要触发的事件类型
  • data:传递给事件处理函数的附加参数

用法示例:

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>事件模拟</title>
    <script src="jquery-1.12.4.js"></script>
</head>
<body>
    <button id="btn">按钮</button>
</body>
<script>
    // 绑定事件 - 由用户触发,调用处理函数
    $('#btn').bind('click',function(){
        console.log('this is test')
    })

    // 模拟用户触发事件
    $('#btn').trigger('click');
</script>

上述代码运行效果如下图所示:

https://gitee.com/project_almanac/change/raw/master/jQuery/5ZPWUiUmpKpu.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值