jQuery事件用法详解

 更新时间:2016年10月06日 07:07:01   作者:jcuan  
这篇文章主要为大家详细介绍了jQuery事件用法,具有一定的参考价值,感兴趣的朋友可以参考一下

JavaScript在浏览器中以单线程模式运行,页面加载后,一旦页面上所有的JavaScript代码被执行完后,就只能依赖触发事件来执行JavaScript代码。

我们可以用jQuery这样绑定一个click事件:

/* HTML:
 *
 * <a id="test-link" href="#0">点我试试</a>
 *
 */

// 获取超链接的jQuery对象:
var a = $('#test-link');
a.on('click', function () {
  alert('Hello!');
});

on方法用来绑定一个事件,我们需要传入事件名称和对应的处理函数。
另一种更简化的写法是直接调用click()方法:

a.click(function () {
  alert('Hello!');
});

jQuery能够绑定的事件

鼠标事件

click: 鼠标单击时触发;
dblclick:鼠标双击时触发;
mouseenter:鼠标进入时触发;
mouseleave:鼠标移出时触发;
mousemove:鼠标在DOM内部移动时触发;
hover:鼠标进入和退出时触发两个函数,相当于mouseenter加上mouseleave。

键盘事件
键盘事件仅作用在当前焦点的DOM上,通常是<input>和<textarea>

keydown:键盘按下时触发;
keyup:键盘松开时触发;
keypress:按一次键后触发

其他事件
ready仅作用于document对象。由于ready事件在DOM完成初始化后触发,且只触发一次,所以非常适合用来写其他的初始化代码。

focus:当DOM获得焦点时触发;
blur:当DOM失去焦点时触发;
change:当<input>、<select>或<textarea>的内容改变时触发;
submit:当<form>提交时触发;
ready:当页面被载入并且DOM树完成初始化后触发
下面的代码没有预期的效果:

<html>
<head>
  <script>
    // 代码有误:
    $('#testForm).on('submit', function () {
      alert('submit!');
    });
  </script>
</head>
<body>
  <form id="testForm">
    ...
  </form>
</body>

因为JavaScript在此执行的时候,<form>尚未载入浏览器,所以$('#testForm)返回[],并没有绑定事件到任何DOM上

正确版本:

  <script>
    $(document).on('ready', function () {
      $('#testForm).on('submit', function () {
        alert('submit!');
      });
    });
  </script>

ready事件使用非常普遍,也这样简化:

$(document).ready(function () {
  $('#testForm).submit(function () {
    alert('submit!');
  });
});

甚至还可以再简化为(最为常见):

$(function () {
  // init...
});

可以反复绑定事件处理函数,它们会依次执行:

$(function () {
  console.log('init A...');
});
$(function () {
  console.log('init B...');
});
$(function () {
  console.log('init C...');
});

事件参数

有些事件,如mousemove和keypress,我们需要获取鼠标位置和按键的值,否则监听这些事件就没什么意义了。所有事件都会传入Event对象作为参数(下边e就是一个event对象),可以从Event对象上获取到更多的信息:

$(function () {
  $('#testMouseMoveDiv').mousemove(function (e) {
    $('#testMouseMoveSpan').text('pageX = ' + e.pageX + ', pageY = ' + e.pageY);
  });
});

取消绑定

一个已被绑定的事件可以解除绑定,通过off('click', function)实现:

function hello() {
  alert('hello!');
}

a.click(hello); // 绑定事件

// 10秒钟后解除绑定:
setTimeout(function () {
  a.off('click', hello);
}, 10000);

可以使用off('click')一次性移除已绑定的click事件的所有处理函数
无参数调用off()一次性移除已绑定的所有类型的事件处理函数

事件触发条件

事件的触发总是由用户操作引发的。例如,我们监控文本框的内容改动,当用户在文本框中输入时,就会触发change事件。但是,如果用JavaScript代码去改动文本框的值,将不会触发change事件。

有些时候,我们希望用代码触发change事件,可以直接调用无参数的change()方法来触发该事件:

var input = $('#test-input');
input.val('change it!');
input.change(); // 触发change事件

input.change()相当于input.trigger('change'),它是trigger()方法的简写。

浏览器安全限制
在浏览器中,有些JavaScript代码只有在用户触发下才能执行,例如,window.open()函数。

以上就是本文的全部内容,希望对大家有所帮助,希望大家继续关注脚本之家的最新内容。

相关文章

  • jQuery 操作下拉列表框实现代码

    jQuery 操作下拉列表框实现代码

    操作下拉列表框的jquery代码,方便学习jquery的朋友。
    2010-02-02
  • jquery last-child 列表最后一项的样式

    jquery last-child 列表最后一项的样式

    发开中个人是比较喜欢用Repeater控件,特别是前台可老是遇到一个问题就是一个列表的最后一项总是和上面的样式不一样 如上面的都有下边框,最后一个就没有
    2010-01-01
  • jquery实现用户登陆界面(示例讲解)

    jquery实现用户登陆界面(示例讲解)

    下面小编就为大家带来一篇jquery实现用户登陆界面(示例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • jQuery UI Dialog控件中的表单无法正常提交的解决方法

    jQuery UI Dialog控件中的表单无法正常提交的解决方法

    研究了页面源码后发现,jQuery UI Dialog控件初始化时动态生成的HTML元素被添加到页面的尾部、form元素的后面,而原始的Dialog模板部分(其内包含表单元素)也被移到了 动态生成的HTML元素内。
    2010-12-12
  • jQuery取id有.的值的方法

    jQuery取id有.的值的方法

    用jQuery取值,当一个id中含有.时,这个时候正常的取法是做不到的,因此请看下文
    2014-05-05
  • 基于jquery鼠标点击其它地方隐藏层的实例代码

    基于jquery鼠标点击其它地方隐藏层的实例代码

    基于jquery鼠标点击其它地方隐藏层的实例代码,需要的朋友可以参考下。
    2011-01-01
  • jQuery插件简单学习实例教程

    jQuery插件简单学习实例教程

    这篇文章主要介绍了jQuery插件的简单用法,列举了分页插件、放大镜插件、自动完成插件、上传插件、日历插件等的简单使用方法,需要的朋友可以参考下
    2016-07-07
  • 在IE浏览器中resize事件执行多次的解决方法

    在IE浏览器中resize事件执行多次的解决方法

    resize事件是在窗口或框架的大小被调整时发生,包括最小化、最大化。在IE和Opera浏览器中,只要窗口边框被拖动,就触发该事件,在Mozilla浏览器中,resize 事件只是在停止改变窗口大小时才会触发。
    2011-07-07
  • JQuery入门——事件切换之toggle()方法应用介绍

    JQuery入门——事件切换之toggle()方法应用介绍

    在toggle()方法中,可以依次调用N个指定的函数,直到最后一个函数,然后重复对这个函数轮番调用,在函数之间切换调用的时候相当的方便,接下来将会详细介绍toggle()方法的使用,感兴趣的你可不要错过了啊
    2013-02-02
  • SuperSlide标签切换、焦点图多种组合插件

    SuperSlide标签切换、焦点图多种组合插件

    SuperSlide 是致力于实现网站统一特效调用的函数,能解决大部分标签切换、焦点图切换等效果,还能多个slide组合创造更多的效果。(兼容ie内核(包括无敌的 ie6)、webkit内核、ff、opera等主流浏览器)。
    2015-03-03

最新评论