jQuery中的事件

【加载DOM】

在常规的JavaScript代码中,通常使用window.onload方法,在jQuery中,使用的是$(document).ready()方法。极大地提高了web应用程序的响应速度。

执行时机

此方法在DOM完全就绪时就可以被调用。因此可能此时元素的关联文件未下载完。由此可以使用jQuery中另一个关于页面加载的load()方法。load()方法会在元素onload事件中绑定一个处理函数。如果函数绑定给window对象,则会在所有内容加载完毕后触发,如果处理函数绑定在元素上,则会在元素的内容加载完毕后触发。

$(window).load(function(){
//编写代码
})

多次使用:JavaScript的onload事件只能保存对一个函数的引用,它会自动用后面的函数覆盖前面的函数。而jQuery的$(document).ready()方法能很好的处理这些情况。

简写方式:$(document).ready(function(){])可以简写为$(function(){})。而且$(document)可以简写为$(),当$()不带参数时,默认参数是document,因此可以简写为$().ready(function(){})。

【事件绑定】

可以使用bind()方法来对匹配元素进行特定事件的绑定,其调用格式为:bind(type[,data],fn);

bind()方法有三个参数:第一个是事件类型;第二个是可选参数,作为event.data属性值传递给事件对象的额外数据对象;第三个是用来绑定的处理函数。

基本效果

<div id="pane1">
<h5 class="head">什么是jQuery?</h5>
<div class="content">
jQuery就是jQuery啊,要想知道,自己百度去。
</div>
</div>

再加上它的jQuery代码:

$(function(){
$("#pane1 h5.head").bind("click",fuction(){
$(this).next().show(); //$(this).next():获取“内容”元素
})
})

加强效果:单击标题链接,内容出现,再击,内容消失。jQuery代码如下

$(function(){
$("pane1 h5.heaf").bind("click",function(){
var $content=$(this).next();
if($content.is(":visible")){ //如果“内容”显示
$content.hide();
}else{
$concent.show();
}
})
})

改变绑定事件的类型:把事件类型从click换成mouseover和mouseout。即当光标滑过时,就触发事件。jQuery代码如下

$(function(){
$("pane1 h5.heaf").bind("mouseover",function(){
$(this).next().show();
}).bind("mouseout",function(){
$(this).next().hide();
})
})

简写绑定事件:如上代码改写成使用简写绑定事件的方式

$(function(){
$("pane1 h5.heaf").mouseover(function(){
$(this).next().show();
}).mouseout(function(){
$(this).next().hide();
})
});

【合成事件】

jQuery有两个合成事件——hover()方法和toggle()方法,都属于jQuery自定义的方法。

hover()方法:语法结构为hover(enter,leave);用于模拟光标悬停事件,当光标移动到元素上时,会触发指定的第一个函数(enter);当光标移出这个元素时,会触发指定的第二个函数(leave)。

toggle()方法:语法结构为toggle(fn1,fn2,...fnN);用于模拟鼠标连续单击事件,第一次单击,触发第一个;第二次,触发第二个;依次触发。直到最后一个,随后的每次单击都重复对这几个函数的轮番调用。

toggle()方法在jQuery中还有一个作用:切换元素的可见状态。如果元素是可见的,单击切换后则为隐藏,反之则可见。具体的在《锋利的jQuery》的P107页。

【事件冒泡】

事件冒泡引发的问题:有可能会引发意料之外的效果,因此,有必要对事件的作用范围进行限制。

事件对象:在程序中使用事件对象,只需为函数添加一个参数即可。jQuery代码如下:

$("element").bind("click",function(event){  //event:事件对象
//......
});

当单击“element”元素时,事件对象就被创建了。这个事件对象只有事件处理函数才能访问到。事件处理函数执行完毕后,事件对象就销毁了。

停止事件冒泡:可以阻止事件中其他对象的事件处理函数被执行。在jQuery中提供了stopPropagation()方法来停止事件冒泡。

$('span').bind("click",function(event){
var txt=$('#msg').html()+"<p>内层span元素被单击</p>";
$('#msg').html(txt);
event.stopPropagation(); //停止事件冒泡
});

当单击<span>元素时,只会触发<span>元素上的click事件,而不会触发<div>元素和<body>元素的click事件。

阻止默认行为:preventDefault()方法。如果想同时对事件对象停止冒泡和默认行为,可以在事件处理函数中返回false。这是在对事件对象上同时调用stopPropagation()方法和preventDefault()方法的一种简写方式。

事件捕获:事件捕获和事件冒泡是刚好相反的两个过程,事件捕获是从最顶端往下开始触发。

并非所有主流浏览器都支持事件捕获,并且这个缺陷无法通过JavaScript来修复。jQuery不支持事件捕获。

【事件对象的属性】

event.type:可以获取到事件的类型。

event.preventDefault()方法:阻止默认的事件行为。JavaScript中符合W3C规范的该方法在IE浏览器中无效,jQuery对其进行了封装,使之能够兼容各种浏览器。

event.stopPropagation()方法:阻止事件的冒泡。JavaScript中符合W3C规范的该方法在IE浏览器中无效,jQuery对其进行了封装,使之能够兼容各种浏览器。

event.target:获取到触发事件的元素。

event.relatedTarget:

event.pageX和event.pageY:获取到光标相对于页面的x坐标和y坐标。

event.which:在鼠标单击事件中获取到鼠标的左、中、右键;在键盘事件中获取键盘的按键。

event.metaKey:为键盘事件中获取<ctrl>按键。

【移除事件】

移除按钮元素上以前注册的事件:unbind()方法。语法结构为:unbind([type],[data]);第一个参数是事件类型,第二个参数是将要移除的函数。说明如下:

(1)如果没有参数,则删除所有绑定的事件;

(2)如果提供了事件类型作为参数,则只删除该类型的绑定事件;

(3)如果把在绑定时传递的处理函数作为第二个参数,则只有这个特定的事件处理函数会被删除。

移除<button>元素的其中一个事件:需要为这些匿名处理函数指定一个变量。

one()方法可以为元素绑定处理函数。语法结构为:one(type.[data],fn);

one()方法为<button>元素绑定单击事件后,只在用户第一次单击按钮时,处理函数才执行,之后的单击毫无作用。

【模拟操作】

常用模拟:在jQuery中,可以使用trigger()方法完成模拟操作。如下可以来触发id为btn的按钮的click事件:

$('btn').trigger("click");  也可以直接用简化写法click():$('#btn').click();

触发自定义事件:trigger()方法还可以触发自定义名称的事件。

传递数据:trigger(type,[data])方法有两个参数,第一个是要触发的事件类型,第二个是要传递给事件处理函数的附加数据,以数组形式传递。

执行默认操作:

//不仅会触发为<input>元素绑定的focus事件,也会使<input>元素本身得到焦点
$("input").trigger("focus");

triggerHandler()方法:只想触发绑定的focus事件,而不像执行浏览器默认操作。

//会触发<input>元素上绑定的特定事件,同时取消浏览器对此事件的默认操作,即文本框只触发绑定的focus事件
$("input").triggerHandler("focus");

jQuery(4)—— jQuery中的事件的更多相关文章

  1. jQuery文本框中的事件应用

    jQuery文本框中的事件应用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...

  2. JQuery在循环中绑定事件的问题详解

    JQuery在循环中绑定事件的问题详解 有个页面上需要N个DOM,每个DOM里面的元素ID都要以数字结尾,比如说 ? 1 2 3 <input type="text" nam ...

  3. 使用jQuery在javascript中自定义事件

    js中的自定义事件有attachEvent,addEventListener等等好多种,往往受困于浏览器兼容,而且代码写起来也相当麻烦.jQuery为我们解决了这个问题,几行代码就可以很好的实现事件的 ...

  4. JQuery 在循环中设置事件,最后一个覆盖了前面所有的设置

    function setValidation() {         for (i = 0; i < alValidations.length; i++) { //alValidations是一 ...

  5. jQuery中的事件绑定方法

    在jQuery中,事件绑定方法大致有四种:bind(),live(), delegate(),和on(). 那么在工作中应该如何选择呢?首先要了解四种方法的区别和各自的特点. 在了解这些之前,首先要知 ...

  6. 四、jquery中的事件与应用

    当用户浏览页面时,浏览器会对页面代码进行解释或编译--这个过程实质上是通过时间来驱动的,即页面在加载时,执行一个Load事件,在这个事件中实现浏览器编译页面代码的过程.时间无论在页面元素本身还是在元素 ...

  7. jQuery:详解jQuery中的事件(二)

    上一篇讲到jQuery中的事件,深入学习了加载DOM和事件绑定的相关知识,这篇主要深入讨论jQuery事件中的合成事件.事件冒泡和事件移除等内容. 接上篇jQuery:详解jQuery中的事件(一) ...

  8. jQuery:详解jQuery中的事件(一)

    之前用过一些jQuery的动画和特效,但是用到的部分也不超过10%的样子,感觉好浪费啊——当然浪费的不是jQuery,而是Web资源.后来就想深入研究下jQuery的内部机理,读过两遍jQuery源代 ...

  9. jQuery学习笔记(三)jQuery中的事件

    目录 加载DOM 事件绑定 合成事件 事件冒泡 移除事件 一.加载DOM Javascript 与HTML之间的交互是通过用户操作浏览器页面引发的事件来处理的.jQuery提供了丰富的事件处理机制.从 ...

  10. Javascript事件模型系列(三)jQuery中的事件监听方式及异同点

    作为全球最知名的js框架之一,jQuery的火热程度堪称无与伦比,简单易学的API再加丰富的插件,几乎是每个前端程序员的必修课.从读<锋利的jQuery>开始,到现在使用jQuery有一年 ...

随机推荐

  1. CF 322A Ciel and Dancing 好简单的题。。最喜欢水题了

    A. Ciel and Dancing time limit per test 1 second memory limit per test 256 megabytes input standard ...

  2. 我是实践派之mongo的一主多从

    mongo一主多从 为什么要做一主多从? mongodb天生就是为了分布式而生的,为了保证数据读写分离和数据安全,把数据放在不同的机子上,可以减少主节点的读压力,而让从节点去承受读请求压力. 主节点用 ...

  3. js手机号批量滚动抽奖代码实现

    我们平时在看一些选秀节目或一些歌唱类比赛节目时经常会看到在现场的大屏幕上会有观众的手机号在滚动来选出谁是幸运观众或谁中了什么奖项,这些手机号都是现场观众或场外观众在给选手投票时产生的,当主持人一声开始 ...

  4. ESLint--定制你的代码规则

    简介 ESLint是一个开源的项目,由Nicholas C. Zakas(<JavaScript高级程序设计>作者)于2013年六月创建.它的目标是为JavaScript提供一个完全可配置 ...

  5. OGG学习笔记02-单向复制配置实例

    OGG学习笔记02-单向复制配置实例 实验环境: 源端:192.168.1.30,Oracle 10.2.0.5 单实例 目标端:192.168.1.31,Oracle 10.2.0.5 单实例 1. ...

  6. 从c#基础到java基础的学习的感悟

    从进入培训公司到现在已经有三周多了,我想我和绝大多数人一样,能考虑进入培训学校,肯定是心理做好了准备的,那就是只有一个目的学好这门技术,从之前的开班典礼来看,从每个同学的自我介绍,我们这的大部分人来这 ...

  7. jQuery 怎么实现文字显示2s,消失0.5s,再显示2s,再消失0.5s,以此循环

    <div style="display: none;" id='divTestDisplay'>我要显示的文字</div> window.onload = ...

  8. html的map自适应

    Map常识 请自己看吧:http://www.w3school.com.cn/tags/tag_map.asp Map自适应 <!DOCTYPE html> <html> &l ...

  9. Java中修饰符

    下面这张图应该大家都见过,根据图表来记忆最好理解 范围 private friendly(默认) protected public 当前类 √ √ √ √ 当前包中的类   √ √ √ 当前包中的类, ...

  10. 删除 CentOS7 更新后产生的多余的内核

    今天更新完系统的内核,重启电脑时发现突然多了一个启动项,想删除多余的启动项,在上网查找后,找到了下面的方法,经过测试,是完全可行的.自己写下来,以便以后用到.1.# uname -a 列出系统中正在使 ...