小议jQuery中的事件
学了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中的事件的更多相关文章
- jQuery中的事件绑定方法
在jQuery中,事件绑定方法大致有四种:bind(),live(), delegate(),和on(). 那么在工作中应该如何选择呢?首先要了解四种方法的区别和各自的特点. 在了解这些之前,首先要知 ...
- jQuery:详解jQuery中的事件(二)
上一篇讲到jQuery中的事件,深入学习了加载DOM和事件绑定的相关知识,这篇主要深入讨论jQuery事件中的合成事件.事件冒泡和事件移除等内容. 接上篇jQuery:详解jQuery中的事件(一) ...
- jQuery:详解jQuery中的事件(一)
之前用过一些jQuery的动画和特效,但是用到的部分也不超过10%的样子,感觉好浪费啊——当然浪费的不是jQuery,而是Web资源.后来就想深入研究下jQuery的内部机理,读过两遍jQuery源代 ...
- jQuery学习笔记(三)jQuery中的事件
目录 加载DOM 事件绑定 合成事件 事件冒泡 移除事件 一.加载DOM Javascript 与HTML之间的交互是通过用户操作浏览器页面引发的事件来处理的.jQuery提供了丰富的事件处理机制.从 ...
- Javascript事件模型系列(三)jQuery中的事件监听方式及异同点
作为全球最知名的js框架之一,jQuery的火热程度堪称无与伦比,简单易学的API再加丰富的插件,几乎是每个前端程序员的必修课.从读<锋利的jQuery>开始,到现在使用jQuery有一年 ...
- jQuery中的事件与动画 (你的明天Via Via)
众所周知,页面在加载时,会触发load事件:当用户单击某个按钮时,会触发该按钮的click事件. 这些事件就像日常生活中,人们按下开关,灯就亮了(或者灭了),往游戏机里投入游戏币就可以启动游戏一样, ...
- Jquery中的事件和动画
在学习Jquery中的过程中我们绝大部分都用到了事件的操作,也可以说事件是Jquery中必不可少的一部分,我们常见的一些事件有单击事件,鼠标事件,键盘事件等等.在Jquery中的学习中为了能使让页面以 ...
- jQuery中的事件机制深入浅出
昨天呢,我们大家一起分享了jQuery中的样式选择器,那么今天我们就来看一下jQuery中的事件机制,其实,jQuery中的事件机制与JavaScript中的事件机制区别是不大的,只是,JavaScr ...
- jQuery中的事件和动画——《锋利的jQuery》(第2版)读书笔记2
第4章 jQuery中的事件和动画 jQuery中的事件 加载DOM $(document).ready(function(){ // 编写代码... }); 可以简写成: $(function( ...
随机推荐
- Web开源框架大汇总
Struts 项目简介信息 Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的.由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的 ...
- C#获取当前应用程序所在路径及环境变量
一.获取当前文件的路径 string str1=Process.GetCurrentProcess().MainModule.FileName;//可获得当前执行的exe的文件名. string st ...
- SQLite内存数据库
[转]SQLite内存数据库 http://www.cnblogs.com/liuyong/archive/2010/09/14/1826152.html SQLite 介绍 一. SQLite 是实 ...
- 初识FreeMarker
一.什么是FreeMarker? FreeMarker基于设计者和程序员是具有不同专业技能的不同个体的观念 他们是分工劳动的:设计者专注于表示——创建HTML文件.图片.Web页面的其它可视化方面: ...
- window.open()打开窗口的几种方式
1. window.open("http://www.baidu.com/", "_search");//在一个新的窗口打开百度,并且使URL地址出现在搜索栏中 ...
- Node.js和mybatis分别实现mysql中like变量模糊查询
<!-- mybatis --> <where> <if test="varName != '' and varName != null" > ...
- oracle中的数据读取与查找
数据读取 首先数据块读入到Buffer Cache中,并将其放在LRU(Last Recently Used)链表的MRU(Most Recently Used)端,当需要再次访问该块时可以直接从bu ...
- 史上最全!信息安全入门指南<转>
以下所列出的链接均为在线文档,有志于信息安全的爱好者可由此作为入门指南. 背景知识 常规知识 Sun认证-Solaris 9&10安全管理员学习指南 PicoCTF资料 应用软件安全 OWAS ...
- 配置文件struts2Struts2配置文件模块化包含(include)与action总结
本文是一篇关于配置文件struts2的帖子 <include>标签 当Struts配置文件比较多,需要模块化分别或分开成为多个配置文件时,这个功能比较好. 则需要使用<include ...
- 记录一下在WinXP上搭建Apache的httpd+PHP+MySQL+Wordpress的过程
实验室有台旧电脑,想用它一台服务器. 不知为何,U盘启动盘死活不能启动,所以放弃了安装Linux的念头,直接在原来的XP上弄一个服务器,毕竟用的人也不多,也就局域网的这几个人, 本来主要是搭建一个FT ...