Welcome 微信登录

首页 / 脚本样式 / JavaScript

jQuery 相关控件的事件操作分解

jQuery 相关控件的事件操作分解

今天突然对他的事件产生了兴趣,先前也碰到过,也没整理,今天有空就弄一下咯。 对于控件的事件,jQuery已经提供了丰富的方法,包括绑定、一次绑定、触发等,阿拉今早看看叫一哪能用额伐,大虾路古就可以了。 jQuery的绑定事件非常方便,有bind、live、one还有它帮你把一些常用的事件给单独了出来,比如控件的onclick事件,我们绑定onclick事件的时候只需要 复制代码 代码如下: $("#testButton").click(function()...
JavaScript 异步调用框架 (Part 1 - 问题 & 场景)

JavaScript 异步调用框架 (Part 1 - 问题 & 场景)

问题 在Ajax应用中,调用XMLHttpRequest是很常见的情况。特别是以客户端为中心的Ajax应用,各种需要从服务器端获取数据的操作都通过XHR异步调用完成。然而在单线程的JavaScript编程中,XHR异步调用的代码风格实在是与一般的JavaScript代码格格不入。 额外参数 考虑一个除法函数,如果它是纯客户端的同步函数,那么签名会是这样的: function divide(operand1, operand2) 然而假设我们对客户端除法的精...
JavaScript 异步调用框架 (Part 2 - 用例设计)

JavaScript 异步调用框架 (Part 2 - 用例设计)

传递回调 我们首先要考虑的一个问题是,如何传递回调入口。在最传统的XHR调用当中,回调函数会被作为最后一个参数传递给异步函数: 复制代码 代码如下:function asyncOperation(argument, callback) 在参数相当多的时候,我们可以把参数放到一个JSON里面,这样参数就如同具名参数一样,可以通过参数名选择性的传递参数,不传递的参数相当于使用默认值。这是从Prototype开始就流行起来的做法: 复制代码 代码如下:funct...
JavaScript 异步调用框架 (Part 3 - 代码实现)

JavaScript 异步调用框架 (Part 3 - 代码实现)

类结构 首先我们来搭一个架子,把需要用到的似有变量都列出来。我们需要一个数组,来保存回调函数列表;需要一个标志位,来表示异步操作是否已完成;还可以学IAsyncResult,加一个state,允许异步操作的实现者对外暴露自定义的执行状态;最后加一个变量保存异步操作结果。 复制代码 代码如下: Async = { Operation: { var callbackQueue = []; this.result = undefined; this.state ...
JavaScript 异步调用框架 (Part 4 - 链式调用)

JavaScript 异步调用框架 (Part 4 - 链式调用)

现实开发中,要按顺序执行一系列的同步异步操作又是很常见的。还是用百度Hi网页版中的例子,我们先要异步获取联系人列表,然后再异步获取每一个联系人的具体信息,而且后者是分页获取的,每次请求发送10个联系人的名称然后取回对应的具体信息。这就是多个需要顺序执行的异步请求。 为此,我们需要设计一种新的操作方式来优化代码可读性,让顺序异步操作代码看起来和传统的顺序同步操作代码一样优雅。 传统做法 大多数程序员都能够很好的理解顺序执行的代码,例如这样子的: 复制代码 代...
让JavaScript 轻松支持函数重载 (Part 1 - 设计)

让JavaScript 轻松支持函数重载 (Part 1 - 设计)

JavaScript支持重载吗? JavaScript支持函数重载吗?可以说不支持,也可以说支持。说不支持,是因为JavaScript不能好像其它原生支持函数重载的语言一样,直接写多个同名函数,让编译器来判断某个调用对应的是哪一个重载。说支持,是因为JavaScript函数对参数列表不作任何限制,可以在函数内部模拟对函数重载的支持。 实际上,在很多著名的开源库当中,我们都可以看到函数内部模拟重载支持的设计。例如说jQuery的jQuery.extend方法...
让 JavaScript 轻松支持函数重载 (Part 2 - 实现)

让 JavaScript 轻松支持函数重载 (Part 2 - 实现)

识别文本签名 我们先来回顾一下上一篇文章中提到的Overload用例: 复制代码 代码如下:var extend = Overload .add("*, ...", function(target) { }) .add("Boolean, *, ...", function(deep, target) { }); 我们允许用户输入一个字符串,表示某一个重载的签名。在用户调用函数时,我们需要拿着用户输入的参数实例去跟签名上的每一个参数类型作比较,因此我们需要...
<< 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 >>