jQuery

jQuery 知识量:7 - 32 - 105

3.3 复合事件><

非DOM原生事件- 3.3.1 -

jQuery中的简单事件(标准的DOM事件)都直接对应DOM的原生事件,就好像是原生事件的一个简称一样。除此以外,出于跨浏览器优化和方便性的考虑,还添加了一些自定义方法。例如:

  • .ready() 当指定的元素加载就绪后发生。

  • .mouseenter() 当鼠标指针穿过指定元素时发生。

  • .mouseleave() 当鼠标指针离开指定元素时发生。

  • .focusin() 当元素或其子元素获得焦点时发生。

  • .focusout() 当元素或其子元素失去焦点时发生。

自定义方法使得事件的处理更符合人们的思维,调用也更加方便。

复合事件处理程序- 3.3.2 -

在jQuery中,一些自定义方法可以截取组合的用户操作,并且以多个函数进行响应,因此被称为符合事件处理程序。例如:.toggle()和.hover()。

1、.toggle()

.toggle()方法有两个参数,并且它们都是函数,当元素被单击后就会循环调用这两个函数。

$(document).ready(function () {
    $('a.clickme').toggle(function () {
        $(this).addClass('setRed');
    }, function () {
        $(this).removeClass('setRed');
    });
});

以上代码的意思是:在DOM就绪后就找到类为“clickme”的链接a,并绑定一个toggle事件(不存在真正的原生toggle事件,这里其实就是一个特殊的click事件),当这个a被第一次点击后,向被点击的a添加新类“setRed”,当a被第二次点击后,移除被点击的a的类“setRed”,当a被第三次点击后,再向被点击的a添加新类“setRed”,如此循环。

以上代码中.removeClass()中列名了要移除的类的名称,如果不向.removeClass()中传入任何参数(类名),那么将移除该元素所有的类。

2、.hover()

.hover()方法可以在鼠标指针进入和离开指定元素时执行不同的动作。它由两个参数,并且也都是函数,第一个函数在鼠标指针进入元素时执行,第二个函数在鼠标指针离开元素时执行。

$(document).ready(function () {
    $('p.come').hover(function () {
        $(this).addClass('setRed');
    }, function () {
        $(this).removeClass('setRed');
    });
});

以上代码的意思是:在DOM就绪后就找到类为“come”的p,并绑定一个hover事件(不存在真正的原生hover事件,这里可以理解为一个mouseover事件和mouseout事件的组合),当鼠标指针移动到这个p上时,向这个p添加新类“setRed”,当鼠标指针离开p时,移除这个p的类“setRed”,当鼠标指针再次移动到这个p上时,再次向这个p添加新类“setRed”,如此循环。