Chinaunix首页 | 论坛 | 博客
  • 博客访问: 58959
  • 博文数量: 7
  • 博客积分: 188
  • 博客等级: 入伍新兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-11 01:05
个人简介

自由软件工程师,come on, 改变世界的力量!

文章分类
文章存档

2013年(5)

2012年(2)

分类: 系统运维

2013-01-07 21:21:53

接着学习第三章。Learning jQuery总共13章,我计划学习到第8章。给个目录先:
第一章:开始 (略过)
第二章:选择元素 (已学)
第三章:操纵事件
第四章:样式和动画
第五章:操作DOM
第六章:Ajax
第七章:使用插件
第八章:插件开发

Performing tasks on page load
$(document).ready()执行jQuery函数的入口,window.onload是JS的原生接口。
原生JS绑定事件的做法:
function doStuff() {
//perform a task...
}
或者 window.onload = doStuff;

可以有多个$(document).ready()函数,它们按注册的顺序执行。

Simple events
首先是三个按钮的html代码:

  1. <div id="switcher" class="switcher">
  2.         <h3>Style Switcher</h3>
  3.         <button id="switcher-default">
  4.           Default
  5.         </button>
  6.         <button id="switcher-narrow">
  7.           Narrow Column
  8.         </button>
  9.         <button id="switcher-large">
  10.           Large Print
  11.         </button>
  12. </div>

有一段文字,默认的style是:
.chapter {
  margin: 1em;
}
我们想点击一个按钮,style变成:
body.large .chapter {
  font-size: 1.5em;
}
代码如下:

  1. $(document).ready(function() {
  2.     $('#switcher-large').bind('click', function() {
  3.         $('body').addClass('large');
  4.     });
  5. });
就这么简单,绑定了一个click事件,让我们继续。

Event handler context
事件操纵上下文

(睡觉,明天继续,我擦嘞,2013年1月7日22:53:42)
(MD,2013年1月9日23:09:13,两天没更新了)
上下文也就是this指针,来一句代码:
$('#switcher button').bind('click', function() {
$('#switcher button').removeClass('selected');
$(this).addClass('selected');
});
所有button去掉了selected属性,只有被点的那个有selected属性。

Shorthand events
事件速记
$('#button-id').bind('click', function(){
$('body').addClass('large');
});
变成:
$('#button-id').click(function(){
$('body').addClass('large');
});

Compound events组合事件

Showing and hiding advanced feature
.toggle()方法,接收两个或更多个函数参数,每次单击就顺序执行这些函数。

  1. $(document).ready(function() {
  2.     $('#switcher h3').toggle(function() {
  3.         $('#switcher button').addClass('hidden');
  4.         },
  5.         function() {
  6.         $('#switcher button').removeClass('hidden');
  7.     });
  8. });
Highlighting clickable items

首先CSS自己有一个伪类:hover,就是鼠标悬浮在上面的样式,IE6对此只支持连接。
我们可以借助.hover()方法。.hover()接收两个函数参数,一个在悬浮的时候执行,一个退出悬浮的时候执行。

  1. $(document).ready(function() {
  2.     $('#switcher h3').hover(function() {
  3.     $(this).addClass('hover');
  4.     }, function() {
  5.     $(this).removeClass('hover');
  6.     });
  7. });
The event object
事件触发执行的钩子函数可以传入event object,即事件对象,其中包含此次事件的信息。
$(document).ready(function() {
$('#switcher').click(function(event) {
$('#switcher button').toggleClass('hidden');
});
});
这里的"event"可以是任何你想要的名字。

Event targets
$(document).ready(function() {
$('#switcher').click(function(event) {
if (event.target == this) {
$('#switcher button').toggleClass('hidden');
}
});
});
上面这段代码,当单击#switcher这个div时,只有单击的对象正是div时才执行,如果单击的是
中的子对象就不执行。

Removing an event handler
就是一个unbind方法

Simulating user interacton
模拟用户行为, .trigger()方法
$(document).ready(function() {
$('#switcher').trigger('click');
});
有一个简写的方法,即click不传任何参数,如下:
$(document).ready(function() {
$('#switcher').click();
});

键盘事件

  1. $(document).ready(function() {
  2.     var triggers = {
  3.         D: 'default',
  4.         N: 'narrow',
  5.         L: 'large'
  6.     };
  7.     
  8.     $(document).keyup(function(event) {
  9.         var key = String.fromCharCode(event.keyCode);
  10.         if (key in triggers) {
  11.         $('#switcher-' + triggers[key]).click();
  12.         }
  13.     });
  14. });
上面代码是一个例子。

书中每章的summary写的很具体,偷懒复制一下,不翻译了:
• Use the .ready() method to let multiple JavaScript libraries coexist on a
single page with .noConflict()
• React to a user's click on a page element with mouse event handlers and the
.bind() and .click() methods
• Observe event context to perform different actions depending on the element
clicked, even when the handler is bound to several elements
• Alternately expand and collapse a page element by using .toggle()
• Highlight elements under the mouse cursor by using .hover()
• Influence event propagation and default actions to determine which
elements get to respond to an event by using .stopPropagation() and
.preventDefault()
• Implement event delegation to reduce the number of bound event handlers
necessary on a page
• Call .unbind() to remove an event handler we're finished with
• Segregate related event handlers with event namespacing so they can be
acted on as a group
• Cause bound event handlers to execute with .trigger()
• Use keyboard event handlers to react to a user's key press with .keyup()

后记:
OK,第三章 操纵事件结束了,这周连上8天班,托了好久才学完这一章。总起来这章还是蛮简单的,绑定事件,响应事件就完事了。
继续第四章 样式和动画 的学习。
阅读(1285) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~