jQuery统一了不同浏览器之间的DOM操作的差异

1. jQuery === $ // true

1.1 $(x) //将x转换为jQuery对象,便于调用jQuery提供的API

1.2 方便操作DOM,支持链式写法,消除各浏览器差异性,一套代码即可

2. $(function () {...})的形式,是document对象的ready事件处理函数。

由于该事件在DOM初始化后发生,因此把所有其他的 jQuery 事件和函数置于该事件中是非常好的做法。

演变如下: 2.1 - 2.3 越来越简化

2.1

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

2.2

$(document).ready(function () {
// on('submit', function)也可以简化:
$('#testForm).submit(function () {
alert('submit!');
});
});

2.3

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

3. 事件参数

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

3.2 https://github.com/janetat/Front-end-toys/tree/master/4. Coordinate-when-mouse-moves

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

4. 取消事件绑定

4.1 off('click')一次性移除已绑定的click事件的所有处理函数。

4.2 无参数调用off()一次性移除已绑定的所有类型的事件处理函数。

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

以下的代码无法达到预期,两个匿名function是两个不同的对象

// 绑定事件:
a.click(function () {
alert('hello!');
}); // 解除绑定:
a.off('click', function () {
alert('hello!');
});

5. 事件触发条件

5.1 事件的触发总是由用户操作引发的。例如,我们监控文本框的内容改动,当用户在文本框中输入时,就会触发change事件

var input = $('#test-input');
input.change(function () {
console.log('changed...');
});

5.2 果用JavaScript代码去改动文本框的值,将不会触发change事件:

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

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

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

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

5.4 由于浏览器的限制,有些敏感的代码只能手动触发

// 无法弹出新窗口,将被浏览器屏蔽:
$(function () {
window.open('/');
});
var button1 = $('#testPopupButton1');
var button2 = $('#testPopupButton2'); function popupTestWindow() {
window.open('/');
} button1.click(function () {
popupTestWindow();
}); button2.click(function () {
// 不立刻执行popupTestWindow(),100毫秒后执行:
setTimeout(popupTestWindow, 100);
});

最新文章

  1. 抓包工具Wireshark过滤器
  2. Oracle分析函数(一)
  3. How repair disk issue when "Fsck Failed please repair manually and reboot"
  4. php简写表达式,&& or || 缩写条件语句
  5. java问卷
  6. lib/sqlalchemy/cextension/processors.c:10:20: 致命错误: Python.h:没有那个文件或目录
  7. 解决Bootstrap模态框切换时页面抖动 or页面滚动条
  8. mobileTech
  9. 移植DNS服务bind
  10. 【转】对Android开发者有益的40条优化建议
  11. 【好文翻译】测试必看:使用Spire.XLS来生成自动化报表!
  12. vagrant yii2 Exception 'yii\db\Exception' with message 'SQLSTATE[HY000] [2002]
  13. snappydb 依赖的jar包
  14. Android NDK 下载
  15. 初识 Cloudera Impala
  16. Jquery 获取对象的几种方式介绍
  17. Elemant-UI日期范围的表单验证
  18. 一条sql解决.一张表的数据复制到另外一张表
  19. sdn的相关学习系列之一mininet的安装
  20. [转]RPC 框架通俗介绍

热门文章

  1. ubuntu16.04修改复制粘贴快捷键的方法
  2. ES+VBA 实现批量添加网络图片
  3. python+pygame的导弹追踪鼠标游戏设置和说明
  4. python 鸢尾花数据集报表展示
  5. vue+axios安装
  6. touch命令修改时间
  7. libcurl库的简介(一)
  8. 深入delphi编程理解之消息(二)发送消息函数及消息编号、消息结构体的理解
  9. MindManager安装、激活
  10. es6二进制数组--基础