jQueryInAction Reading Note 4.

事件模型:javascript相关

事件模型的概念是浏览器的内容,却又与javascript相关

DOM第0级事件模型

在出现标准的事件模型之前,网景公司的网景航海家浏览器中引入了事件模型的概念。

$("#someId")[0].onclick = function(event){//...}

<img src="..." onclick="someFunction();" />

Event实例

javascript的每一个函数都有一个event实例作为默认参数。

在非IE浏览器中,event作为一个类的实例,传递给函数;在IE中,Event类的实例赋给了window.event变量。

事件冒泡

当点击一个元素的时候,这个元素的点击事件触发以后,包含这个元素的父元素的点击事件也会触发,以此类推,直到HTML元素。

这种特性成为冒泡事件。

阻止冒泡事件

event实例有一个stopPropagation()方法,这个方法能够阻止冒泡事件的继续发生。

而IE的做法是把event的一个名叫cancelBubble的属性的值设为true。

DOM第2级事件模型

$("someId")[0].addEventListener("click", function(event){//some work to do}, false);

这里面click是eventType,常见的有click,dbclick,blur,mouseover等;

function就是针对这个元素的eventType事件的处理函数;

false,成为useCapture。

这个useCapture的值为true的时候,发生冒泡的逆运算;false的时候,发生冒泡;

这种形式的好处是可以给一个元素追加多个同意eventType类型的函数处理;

jQuery事件模型:jQuery相关

bind(eventType, data, listener)

给一个包装集中的各个元素的eventType类型的event追加一个listener类型的处理函数,而data能够传递给默认的event实例的data属性

eventType支持"click.editMode"这种形式,这种形式处理的仍然是click事件,但是这个click事件只有在editMode模式下有效。

导致模式失效的是下面的unbind方法;

one(eventType, data, listener)

跟bind基本相同,不过这个元素上绑定的这个事件类型发生一次之后自动移除。

unbind(eventType, listener)

unbind(evnet)

就是把绑定到元素上的eventType类型的event处理函数去除掉

trigger(eventType)

触发指定的eventType类型的event。

这个方法仅仅是触发这个event,不会发生连带反应。

toggle(listenerOdd, listenerEven)

点击事件,当点击次数为奇数次时触发listenerOdd函数,偶数次时触发listenerEven函数。

hover(overListener, outListener)

覆盖事件,当覆盖当前元素时触发overListener函数,当从当前元素上移开时触发outListener函数。

$(":checkbox").click(function(event){

  var checked = this.checked; // 判断当前checkbox是否为选中状态

  $("div", $(this).parents("div:first")) // 从当前checkbox元素的父节点中找到第一个div元素,并且从这个div元素内部查找div元素。

    .css("display", checked ? "block" : "none");

});

$(‘span[price] input[type=text]‘).change(function(event){  // 查找拥有price属性的span元素的子节点中类型为text的input元素

  $(‘~ span:first‘, this)  // this指代的是input元素,查找this的兄弟节点中第一个span

    .text(  // 设定其span的text内容

      $(this).val() * $(this).parents("span[price]:first").attr(‘price‘);  // 获取input的值,乘以这个input元素的父节点中第一个拥有price属性的span的特性price的值

    )

});

jQueryInAction Reading Note 4.,布布扣,bubuko.com

时间: 2024-10-14 11:37:22

jQueryInAction Reading Note 4.的相关文章

jQueryInAction Reading Note 7.

jQuery插件命名规则 jquery.pluginName.js pluginName指代的是插件的名称,如voctrals,tlaliu或者更有意义的名称. 简化jQuery函数的参数列表 如果有一个函数有多个参数,但是并不是每一个参数都是必须的,可以把必须的参数放到前面,不必须的参数包装成一个object. 如: function complex(param, options){ var settings = $.extend( { option1 : defaultValue1, opt

jQueryInAction Reading Note 6.

这一章的前面一部分实在是无法理解,略过吧... $.noConflict() 无参数,无返回值,是用来把$符号交给其它的javascript库的. 但是并没有放弃使用jQuery的意思,jQuery仍然可以使用,并且可以把jQuery指派给另外一个别的名称,如$j,但是仍然会让人不爽. 但是如果在调用了$.noConflict()方法之后,还是想要使用$的话,可以使用一种方法,这种方法说白了就是设定一个形式参数$,而形式参数对应着的实体参数是jQuery,也就是说使用函数的方式. functio

jQueryInAction Reading Note 3.

属性和特性 操作元素属性 jQuery没有用于获取或者修改元素属性的命令.需要利用javascript,首先需要做的就是获得元素的引用. each(function) 对包装集中的各个元素,进行function操作,function有默认的参数为当前元素的位置,function具有当前对象this的引用. $("img").each(function(n){ this.alt = "this is " + n+1 + "th img, id is &quo

jQueryInAction Reading Note 5.

$(function(){ $('li:has(ul)') .click(function(event){ if (this == event.target){ if($(this).children().is(':hidden')){ $(this) .css('list-style-image', 'url(minus.gif)') .children().show(); } else { $(this) .css('list-style-image', 'url(plus.gif)') .

jQueryInAction Reading Note 2.

创建元素包装集 选择元素 1 CSS选择器 这个小猿比较熟悉,为了给一组相同的页面元素设置相同的样式,会用到CSS选择器: 2 子选择器 也就是万能的“>”号了吧.选择父元素的直接子元素,li > a,选择作为无序列表直接子元素的所有链接. 3 特性选择器 a[href^=http://]选择是以http://开头的所有的链接,a[href$=.pdf]选择指向一个pdf文件的所有链接. 如果我们并不关心其特性,可以省略=,如form[method],不管form是post还是get.据我所知

thinking in java ----reading note (1)

# thinking in java 4th# reading note# victor# 2016.02.10 chapter 1 对象入门 1.1 抽象的进步    (1) 所有东西都是对象.    (2) 程序是一大堆对象的组合,对象间通过消息联系.    (3) 通过封装现有对象,可制作出新型对象.    (4) 每个对象都有一种类型(某个类的实例).    (5) 同一类的所有对象都能接受相同的消息.    1.2 对象的接口 & 1.3 实现方法的隐藏     接口规定了可对一个特定

thinking in java -----reading note(2)

# thinking in java 4th# reading note# victor# 2016.02.16 chapter 2 一切都是对象 2.1 用句柄操纵对象    使用句柄作为标识符指向一个对象.但拥有句柄并不意味着有一个对象同它连接.    例如,创建一个String句柄: String s;    此时,这里创建的是句柄,并不是对象.如果向s发一条消息,就会获得一个错误.因此,较为安全的做法是:创建一个句柄时,无论如何都进行初始化. 2.2 创建对象    通常使用 new 关

thinking in java ----reading note (3)

# thinking in java 4th# reading note# victor# 2016.03.13 chapter 3 控制程序流程 3.1 java 运算符    几乎所有运算符都只能操作"基本值类型"."=","=="和"!=" 能操作所有对象,String类支持"+"和"+=". 3.1.1 优先级    运算符的优先级决定了存在多个运算符时一个表达式个部分的计算顺序

Programming In Scala Reading Note 3

Class and Object class TestClass { val some = 1 } 生成的class文件中会包含一个some()方法,并且这个方法是public的,也就是说类外可以通过类的对象来获取这个some的值 修改: class TestClass { private val some = 1 } 会生成一个private的some()方法,返回值也是some.但是现在类外是访问不到的 类的方法的参数默认是val类型的 副作用大部分用来修改一个属性的值或者开关一个I/O,只