学了jQuery这么长时间,到这里真的有一种柳暗花明又一村的感觉,在这里先表达一下自己学这一章节的happy心情吧(在严厉的金工实习老师眼皮底下偷偷学习,当然还有各种nerves~)。

1加载DOM

在JS中浏览器装载文档通常使用window.onload方法,而在jQuery中使用的是$(document).ready()方法~这两人区别在哪里呢,JS必须等每一幅图片加载完毕后才能进行操作,网页的所有元素对jQuery而言都是可以访问的,但这并不意味着这些元素关联的文件都已经下载完毕哦,只要DOM就绪就可以操作了,何苦等所有图片都下载完毕,so,速度就这样相形见绌了~还有一点就是JS的onload事件一次只能保存对一个函数的引用,他会自动用后面的函数覆盖前面的函数,因而不在现有的行为上添加新的行为,所以为了达到两个函数顺序触发的效果JS会选择

 window.onload=function(){
one();
two();
}

但这种方法不能解决某些需求例如多个文件使用window.onload方法加载多个JS文件。这样我们就可以每次调用$(document).ready()方法在现有行为上追加新的行为

 function one(){
alert("one");
}
function two(){
alert("two");
}
$().ready(function(){
one();
})
$().ready(function(){
two();
});

2事件绑定

bind()方法调用格式为

bind(type [,data], fn);

第二个参数为可选参数,作为event.data属性值传递给事件对象的额外数据对象。

与ready()方法一样,bind()方法也可以多次调用,在代码中如果发现$(this).next()被多次调用,可以为它定义一个局部变量

 $(function(){
$("#panel h5.head").bind("click",function(){
var $content=$(this).next();
if($content.is(":visible")){
$content.hide();
}else{
$content.show();
}
})
})

改变绑定事件的类型及简写绑定事件

 $(function(){
$("#panel h5.head").mouseover(function(){
$(this).next().show();
}).mouseout(function(){
$(this).next().hide();
})
})

3合成事件

jQuery有两个合成事件,那就是被我们灰常广泛的应用的hover()和toggle()方法,属于自定义方法。

hover()方法的结构为:

hover(enter,leave);该方法用于模拟光标悬停事件,当光标移动到元素上时会触发指定的enter,移出时会触发leave.

eg:

$(function(){
$("#panel h5.head").hover(function(){
$(this).next().show();
},function(){
$(this).next().hide();
});
});

toggle()方法可谓是老生常谈了,这里就不多啰嗦什么了吧~

结构:

toggle(fn1,fn2,fn3,...fnN);模拟鼠标连续单击事件,每次单击都是重复对这几个函数的轮番调用。

4事件冒泡和事件捕获

事件冒泡和事件捕获是一个相反的过程。

很多情况下事件冒泡会产生很多问题,那么如何停止事件冒泡呢~(event.stopPropagation();可谓是杀手锏~

5阻止默认行为

网页中的元素有自己的默认行为,eg单击超链接人家就会跳转,单击提交按钮后表单会提交,但有时我们需要阻止元素的默认行为,

比如当表单不符合提交条件时要阻止表单的提交。在jQuery中我们亮剑"preventDefault()"方法来阻止元素的默认行为。

 <script type="text/javascript">
$(function(){
$("#sub").bind("click",function(event){
var usename=$("#username").val();
if(username==""){
$("#msg").html("<p>文本框内容不能为空</p>>");
event.preventDefault(); }
});
}) </script>
<form action="test.html">
用户名:<input type="text" id="username"/>
<input type="submit" value="提交" id="sub"/>
</form>
<div id="msg"></div>

如果想同时对事件对象停止冒泡和默认行为,可以在事件处理函数中返回false。

return false;

这可比同时调用event.preventDefault();//阻止默认行为   和  event.stopPropagation();//停止事件冒泡   简单快捷多了~

6事件对象的属性

event.type,event.target//获取到触发事件的元素.event.relatedTarget//除mouseover和mouseout外的相关元素,event.pageX和event.pageY这些属性就看名字也就明白是怎么回事了,就不多说废话了。

event.which

 $("a").mousedown(function(e){
alert(e.which)//1=鼠标左键 2=鼠标中键 3=鼠标右键
})

event.metaKey

众所周知,不同浏览器对<ctrl>按键的解释是不同的,有道是魔高一尺道高一丈,针对这个问题,jQuery对此进行了封装,并规定event.metaKey为键盘事件中获取<ctrl>按键。

7移除事件

关于移除事件那点说小不小的事,除了我们所熟悉的unbind()方法还有一个神奇的东西,one()方法,该方法对绑定的函数只触发一次,随后立即解除绑定关系。

8模拟操作

很多情况下是用户通过单击按钮等操作才能触发click事件,但在很多很多情况下需要模拟用户操作,这样有什么好处呢,外卖都送到宿舍门口了,不需要用户单击的才是更方便的啊~

trigger()不仅可以触发浏览器支持的具有相同名称的事件比如click ,也可以触发自定义名称的事件,关键是人家还可以传递参数

 $("#btn").trigger("click");

 $("#btn").trigger("myClick");

 $("#btn").trigger("myClick",["我的自定义"。“事件”]);

9相关元素的其他用法

A绑定多个事件类型

 $(function(){
$("div").bind("mouseover mouseout",function(){
$(this).toggleClass("over");
});
});

2添加事件命名空间,便于管理
例如可以把为元素绑定的多个事件类型用命名空间规范起来

 $(function(){
$("div").bind("click.plugin",function(){
$("body").append("<p>click事件</p>");
$("div").bind("mouseover.plugin",function(){
$("body").append("<p>mouseover事件</p>");
$("div").bind("dblclick.plugin",function(){
$("body").append("<p>dblclick事件</p>");
});
$("button").click(function(){
$("div").unbind(".plugin")};
});
});

未完待续......

小议jQuery中的事件的更多相关文章

  1. jQuery中的事件绑定方法

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

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

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

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

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

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

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

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

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

  6. jQuery中的事件与动画 (你的明天Via Via)

    众所周知,页面在加载时,会触发load事件:当用户单击某个按钮时,会触发该按钮的click事件. 这些事件就像日常生活中,人们按下开关,灯就亮了(或者灭了),往游戏机里投入游戏币就可以启动游戏一样, ...

  7. Jquery中的事件和动画

    在学习Jquery中的过程中我们绝大部分都用到了事件的操作,也可以说事件是Jquery中必不可少的一部分,我们常见的一些事件有单击事件,鼠标事件,键盘事件等等.在Jquery中的学习中为了能使让页面以 ...

  8. jQuery中的事件机制深入浅出

    昨天呢,我们大家一起分享了jQuery中的样式选择器,那么今天我们就来看一下jQuery中的事件机制,其实,jQuery中的事件机制与JavaScript中的事件机制区别是不大的,只是,JavaScr ...

  9. jQuery中的事件和动画——《锋利的jQuery》(第2版)读书笔记2

    第4章 jQuery中的事件和动画 jQuery中的事件 加载DOM $(document).ready(function(){   // 编写代码... }); 可以简写成: $(function( ...

随机推荐

  1. QString 与 QByteArray笔记

    程序中在于外设打交到是常常会用到读硬件显示到控件,或是读控件写到硬件的情况,操作的最多的是字节流,所以肯定会用到QString 和QByteArray,下面测试一些常用的转换: #include &l ...

  2. URAL 2065 Different Sums (找规律)

    题意:构造一个数列,使得它们的区间和的种类最少,其中数列中不同的数的数目不少于k. 析:我们考虑0这个特殊的数字,然后0越多,那么总和种类最少,再就是正负交替,那么增加0的数量. 代码如下: #pra ...

  3. java操作redis之jedis篇

    首先来简单介绍一下jedis,其实一句话就可以概括的,就是java操作redis的一种api.我们知道redis提供了基本上所有常用编程语言的clients,大家可以到http://redis.io/ ...

  4. 初学Android 一 基本开发环境

    Android平台架构 1.应用程序层: 核心应用程序和普通应用程序,他们都是平级的,都可以平等的调用下层. 2.应用程序框架:供上一层调用的API. 3.函数库: 不能被直接调用的C/C++库的集合 ...

  5. sql的存储过程调用

    USE [ChangHong_612]GO/****** Object: StoredProcedure [dbo].[st_MES_GetCodeRule] Script Date: 09/10/2 ...

  6. UVa839 Not so Mobile

      我的解法: 建树,递归判断 #include<cstdio> #include<cstring> #include<iostream> #include< ...

  7. git使用具体介绍

    1. Git概念  1.1. Git库中由三部分组成         Git 仓库就是那个.git 文件夹,当中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪 ...

  8. Codeforces Round #327 (Div. 2) E. Three States BFS

    E. Three States Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/591/probl ...

  9. XtraBackup原理3

    http://mysql.taobao.org/monthly/2016/03/07/ MySQL · 物理备份 · Percona XtraBackup 备份原理 前言 Percona XtraBa ...

  10. 实例源码--Android自定义Gallery动画效果

    相关文档与源码: 下载源码   技术要点: 1.自定义控件的使用 2.Gallery控件的使用实例 3.详细的源码注释 ...... 详细介绍: 1.自定义控件的使用 本套源码通过自定义控件的方式,继 ...