一、事件编程

1、基本事件(以方法形式存在的)

基本语法:

原生Javascript代码中的事件绑定方式:

DOM对象.事件 = 事件的处理程序

 

jQuery代码中的事件绑定方式:

jQuery对象.事件(事件处理程序)

2、常用的事件列表

  • blur(fn) :当失去焦点时触发
  • change(fn) :当下拉选框状态改变时触发
  • click(fn) :当单击时触发
  • dblclick(fn) :当双击时触发
  • focus(fn) :当获得焦点时触发
  • keydown(fn) :当键盘按下时触发
  • keyup(fn) :当键盘弹起时触发
  • keypress(fn) :当键盘按下时触发
  • load(fn) :当页面载入时触发,与ready方法功能一致
  • unload(fn) :当页面关闭时触发,其处理程序中不能放置alert语句
  • mousedown(fn) :当鼠标按下时触发
  • mouseup(fn) :当鼠标弹起时触发
  • mousemove(fn) :当鼠标移动时触发
  • mouseover(fn) :当鼠标悬浮时触发
  • mouseout(fn) :当鼠标离开时触发
  • resize(fn) :当窗口大小改变时触发
  • scroll(fn) :当滚动条滚动时触发
  • select(fn) :(了解),当文本框文本选中时触发
  • submit(fn) :当表单提交时触发

示例代码:

问题:在原生Javascript代码中,事件绑定一共有三种形式:

① 行内绑定

② 动态绑定

③ 事件监听

那在jQuery中,其事件绑定是以哪种形式呢?

运行结果:弹出hello,在弹出world。

所以由以上案例可以得出结论:在jQuery中,其事件绑定都是以事件监听的形式存在的且其调整了事件监听的兼容性问题并更改了事件的触发顺序,统一为正序触发(先绑定先触发)。

3、事件切换

  • hover(over,out) :鼠标悬浮与鼠标离开事件

参数说明:

over:鼠标悬浮事件,通常是一个匿名函数

out:鼠标离开事件,通常是一个匿名函数

 

  • toggle(fn,fn,…) :鼠标点击切换事件

参数说明:

fn:鼠标点击时触发的事件处理程序,可以有多个

当第一次单击时,触发第一个fn事件处理程序

当第二次单击时,触发第二个fn事件处理程序

例1:hover方法的使用

例2:toggle方法的使用

4、事件处理(封装的函数,专门用于事件绑定)

  • bind(type,[data],fn) :为某个元素绑定相关的事件处理程序

参数说明:

type:不带'on'前缀的事件类型

[data]:(了解),事件发生时所传递的参数,如果没有则直接写第三个参数即可

fn:事件的处理程序

  • bind({type:fn,type:fn}) :为某个元素绑定多个事件处理程序,参数是一个json数据

参数说明:

type:不带'on'前缀的事件类型

fn:事件的处理程序

  • one(type,[data],fn) :为某个元素进行一次绑定,只触发一次

参数说明:

type:不带'on'前缀的事件类型

[data]:(了解),事件发生时所传递的参数,如果没有则直接写第三个参数即可

fn:事件的处理程序

  • unbind([type]) :移除事件

参数说明:

[type] :可选参数,要移除的事件类型,如果不写代表移除所有事件

 

例1:使用bind方法为元素绑定事件

例2:使用one方法进行事件处理

例3:使用unbind方法移除事件

在原生Javascript代码中,事件移除必须有一个前提:在事件绑定时,其事件的处理程序必须是一个有名函数,但是在jQuery代码中只需要提供要移除的事件类型即可。

5、事件绑定中的this指向

在Javascript中有一个特殊的对象,叫做this,其在不同环境下其指向也是不同的:

行内绑定中this指向window对象

动态绑定中this指向当前正在操作的dom对象

事件监听中其this具有兼容性问题,在IE内核浏览器下其指向全局window对象,W3C内核浏览器下其指向当前正在操作的dom对象

 

问题:jQuery中,其事件绑定都是采用事件监听的形式实现的,那么其内部的this又指向何方呢?

调试结果如下图所示:

由此可以得出结论:在jQuery事件绑定中,其内部的this指向当前正在操作的DOM对象。

6、事件冒泡

之所以称之为事件冒泡是指事件的响应会像水泡一样上升至最顶级对象。

由上图可知,在jQuery中依然存在事件冒泡行为,有些情况下冒泡是人为设计的,但是大多数情况下,冒泡是需要禁止的!

IE内核浏览器:

window.event.cancelBubble = true;

W3C内核浏览器:

dom对象.事件 = function(event) {

event.stopPropagation();

}

在jQuery中,其解决了兼容性问题,统一更改为:

event.stopPropagation();

通过以上代码测试可知,其解决了IE内核与W3C内核浏览器的兼容性问题,并解决了事件冒泡,所以jQuery实际上是对event进行了二次封装。

7、默认行为

在html代码中,很多标签具有自己的默认行为。

如a超级链接标签,单击后可以跳转到指定页面

如submit按钮,单击后可以自动提交表单数据到服务器端页面

但是有些情况下,默认行为是需要禁止的:

IE内核浏览器:

window.event.returnValue = false;

W3C内核浏览器:

dom对象.事件 = function(event){

event.preventDefault();

}

在jQuery中,其禁止行为的方法,统一更改为event.preventDefault()实现:

二、jQuery中的效果

  • 基本
  • 滑动
  • 淡入淡出
  • 自定义动画

1、基本效果(显示或隐藏)

  • show() :显示
  • show(speed,[callback]) :以动画效果显示
  • hide() :隐藏
  • hide(speed,[callback]) :以动画效果隐藏
  • toggle() :切换显示或隐藏
  • toggle(switch) :显示或隐藏。switch,布尔类型的值,true:显示,false:隐藏
  • toggle(speed,[callback]) :以动画效果显示或隐藏

参数说明:

speed:动画的速度或动画的持续时间

如果采用动画的速度,其值可以是以下三种情况:

"slow" :缓慢的

"normal" :正常的

"fast" :快速的

如果采用动画的持续事件,其可以是固定值,默认单位为毫秒

[callback]:可选参数,动画完成时所触发的回调函数

 

示例代码:

2、滑动效果(上下滑动)

  • slideDown(speed,[callback]) :以动画效果向下滑动
  • slideUp(speed,[callback]) :以动画效果向上滑动
  • slideToggle(speed,[callback]) :以动画效果向上或向下滑动

参数说明:

speed:动画的持续时间

[callback]:可选参数,动画完成时所触发的事件处理程序

 

示例代码:

3、淡入淡出效果(针对元素的透明度)

  • fadeIn(speed,[callback]) :以动画效果淡入
  • fadeOut(speed,[callback]) :以动画效果淡出

参数说明:

speed:动画的持续事件

[callback]:可选参数,动画完成时所触发的回调函数

  • fadeTo(speed,opacity,[callback]) :以动画效果设置元素的透明度

参数说明:

speed:动画的持续时间

opacity:元素的透明度,0全透明1不透明 0-1之间半透明

[callback]:可选参数,动画的持续时间

特别注意fadeOut与fadeTo之间对透明度为0的处理有区别,fadeOut如果消失后,其不再占用原有位置,但是fadeTo设置为全透明时,其默认还是占有原来的位置。

 

示例代码:

4、自定义动画

animate(params,[speed], [callback]) :自定义动画效果

参数说明:

params :要求是一个json格式的数据

[speed] :动画的持续时间

[callback] :动画完成时所触发的回调函数

示例代码:

5、几个小案例

例1:一组图片的淡入淡出

例2:仿hao123左侧导航功能

三、jQuery文档操作

  • 插入
  • 删除
  • 复制
  • 替换
  • 包裹
  • 查找

1、内部插入

  • append(content) :在元素的尾部插入content内容
  • appendTo(content) :把匹配到的元素插入到content元素的尾部
  • prepend(content) :在元素的头部插入content内容
  • prependTo(content) :把匹配到的元素插入到content元素的头部

例如:<div>worldhelloworld</div>

示例代码:

2、外部插入

  • after(content) :在元素的尾部插入content内容
  • before(content) :在元素的头部插入content内容
  • insertAfter(content) :把匹配到的内容插入到content元素的尾部
  • insertBefore(content) :把匹配到的内容插入到content元素的头部

例如:world<div>hello</div>world

示例代码:

3、删除操作(节点)

  • empty() :清空元素的内容,但不删除元素本身
  • remove() :删除整个元素

示例代码:

4、复制操作

  • clone() :复制元素本身,但不复制元素本身的事件
  • clone(true) :除了复制元素本身,还要复制元素本身的事件

扩展:天猫购物车

5、替换操作

  • html() :替换元素的内容
  • replaceWith() :替换元素本身

6、包裹操作

  • wrap() :对每一个元素进行单独包裹
  • wrapAll() :对所有元素进行一次包裹
    • wrapInner() :对每一个元素的内容进行单独包裹

例如:<div><strong>hello</strong></div>

7、查找操作

  • eq(index) :查找索引等于index的元素
  • filter(expr) :查找某个指定条件的元素,不是过滤,而是缩小查询范围
  • not(expr) :查找除指定元素外的其他元素
  • children([expr]) :查找当前元素的所有子元素(一级)
  • find(expr) :查找当前元素的所有后代元素(任何级别)
  • next([expr]) :查找紧邻的下一个元素
  • prev([expr]) :查找紧邻的上一个元素
  • parent([expr]) :查找当前元素的父元素
  • siblings([expr]) :查找当前元素的所有同级兄弟元素(无论上下)

 

示例代码:

四、jQuery插件扩展机制

1、为什么需要插件扩展机制

在实际项目开发中,可能我们需要的某个功能在jQuery中并没有进行封装,那这个时候我们就可以通过jQuery中的插件扩展机制对其进行扩充。

2、基本语法

jQuery.fn.extend(object)

特别说明:在jQuery源代码中,jQuery与$是完全等价的,如下图所示:

参数说明:

object :要求是一个json格式的对象,语法如下:

jQuery.fn.extend({

    //扩展函数名称:具体程序实现

    fn1:function(){},

    fn2:function(){},

    ......

});

特别说明:在jQuery插件扩展机制中,也存在一个特殊对象,叫做this,其指向了当前正在操作的jQuery对象。

3、示例代码

4、综合案例——实现全选、全不选、反选功能

 

Jquery 学习二的更多相关文章

  1. jquery 学习(二) - 属性操作

    html代码 <div class="n1" zdy="z1">AAA <p>1111111</p> <input t ...

  2. jQuery学习(二) 自定义扩展函数

    jQuery函数调用写法很优雅,在项目开发过程中,有需要自定义函数经常被使用到,将这些函数放置到项目ExtTool.js中,为了编码方式的统一,也希望这些自定义函数与jQuery函数一致的调用方式.在 ...

  3. JQuery学习二(获取元素控件并控制)

    $(’#id‘).+function; 例如: 1 <head> 2 <title>JQuery</title> 3 <script src="js ...

  4. jQuery学习(二)——使用JQ完成页面定时弹出广告

    1.JQuery效果 2.步骤分析: 第一步:引入jQuery相关的文件 第二步:书写页面加载函数 第三步:在页面加载函数中,获取显示广告图片的元素. 第四步:设置定时操作(显示广告图片的函数) 第五 ...

  5. jQuery学习二

    1.id选择器: // 4.如果页面中多个元素id相同,jquery只会获取第一个id的jquery对象 var jquery = $('#name'); alert(jquery.val()); v ...

  6. jQuery学习(二)

    操作DOM对象: 修改文本: jQuery对象的text()和html()方法可以用来获取节点的文本内容和HTML文本.而当你给方法传入参数时,这两个方法可以被用于设置jQuery的文本内容. 还是以 ...

  7. JQuery学习二-字典操作

    1. 数组中添加map var arr = []; var key = 'Jeremy'; var value = '!!!!' arr.push({ 'key': key, 'value': val ...

  8. jQuery学习-事件之绑定事件(二)

    在上一篇<jQuery学习-事件之绑定事件(一)>我们了解了jQuery的add方法,今天我们来学习下dispatch方法: dispatch: function( event ) {   ...

  9. jQuery学习之二 jQuery选择器

    一.jQuery选择器是什么1.CSS选择器2.jQuery选择器 二.jQuery选择器的优势1.简洁的写法2.支持从CSS1到CSS3选择器3.完善的处理机制  传统js选择器假如要操作的元素不存 ...

随机推荐

  1. 【windows socket+TCPserverclient】

    Windows Socket+TCPserverclient      Winsock是 Windows下套接字标准.          Socket套接字基于计算机网络,提供同一系统上不同进程或由局 ...

  2. [转]使用 PIVOT 和 UNPIVOT

    可以使用 PIVOT 和 UNPIVOT 关系运算符将表值表达式更改为另一个表.PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执 ...

  3. 利用yum工具安装应用程序

    在安装gtk+编译环境的过程中,你会发现,RPM软件包之间的依赖关系非常复杂.在实际管理过程中,这种依赖关系可能会更加复杂.因此非常有必要寻找一种自动化安装工具,让安装工具自己处理这些关系复杂的依赖关 ...

  4. Spring源码解析之:Spring Security启动细节和工作模式--转载

    原文地址:http://blog.csdn.net/bluishglc/article/details/12709557 Spring-Security的启动加载细节   Spring-Securit ...

  5. IOS 开发过程中的 消息通知 小红点

    大致分为两种方法:系统方法和自定义方法 系统方法: 系统自带的方法可以显示具体的消息数量,这个就是苹果设备常见的小红点.实现思路如下: NSArray *tabBarItems = self.navi ...

  6. Apple 预计于内华达州雷诺市再盖一个数据中心

    Apple 为了满足各位对 Siri 姐(妹?那个谁去问问她年纪拜托)还有 iCloud 等云端服务的爱护,所以近期之内不断地在各地建置他们的数据中心来维持云端数据传输的稳定度.从美国的北卡. 俄勒冈 ...

  7. 通过GCD、NSOperationQueue队列、NSThread三种方法来创建多线程

    #import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutl ...

  8. 通过uiview动画来放大图片

    UIImage *image=[UIImage imageNamed:"]; UIImageView *imageView=[[UIImageView alloc]init]; imageV ...

  9. MVC框架 - 高级示例

    在第一个MVC教程章中,我们学会了如何在MVC控制器和视图进行交互.在本教程中,我们将向前更进一步,学习如何使用模型创建高级应用程序来创建,编辑,删除用户,在我们的应用程序中查看列表. 下面是用来创建 ...

  10. Android小项目之十二 设置中心的界面

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...