学了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. POJ 2828 Buy Tickets (线段树 or 树状数组+二分)

    题目链接:http://poj.org/problem?id=2828 题意就是给你n个人,然后每个人按顺序插队,问你最终的顺序是怎么样的. 反过来做就很容易了,从最后一个人开始推,最后一个人位置很容 ...

  2. #pragma comment使用

    编程经常碰到,理解的总不是很透彻,在这里查阅资料总结一下! 在编写程序的时候,我们常用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作. #pragma once : 这是一个 ...

  3. 用 JavaScript 修改样式元素

    利用 <style> 元素,我们可以在网页中嵌入样式表.如果需要动态增加 <style> 元素,似乎可以用如下的 JavaScript 代码: var style = docu ...

  4. Call me, maybe?

    Hey, I just met you, and this is crazy, but here's my number so call me, maybe? @Test public void te ...

  5. iOS 判断只有数字、小数点和减号

    #define NUMBERS @"0123456789.-" //数字 #define NUM @"0123456789" //字母 #define ALPH ...

  6. Invoke-Express 执行多个批处理命令的函数

    function Mult_ping ($ips) { # $cmdline = "PIng" foreach ($ip in $ips) { $cmdline = "p ...

  7. Java中throws和throw的区别讲解

    当然,你需要明白异常在Java中式以一个对象来看待.并且所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,但是一般情况下Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示, ...

  8. Java Nio 多线程网络下载

    --> 默认最多50个线程 同一文件下载失败延迟超过30秒就结束下载 --> 下载5分钟超时时间,假设5分钟内未下载完就结束下载 --> 依赖 commons-httpclient ...

  9. 【转】C++ static关键字

    原文:http://blog.csdn.net/hackbuteer1/article/details/7487694 C++的static有两种用法:面向过程程序设计中的static和面向对象程序设 ...

  10. URAL 2056 Scholarship 水题

    ScholarshipTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.a ...