`
decentway
  • 浏览: 159164 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论
阅读更多

1. 要使用Event,首先要引入YUI3的种子文件:

<script src="http://yui.yahooapis.com/3.0.0/build/yui/yui-min.js"></script>

然后加载相应模块:

 

YUI().use('event', function(Y) {

});

2. 设置事件响应函数:on() 
有两个on方法,一个是YUI的,一个是Node的 

Y.on("click", handleClick, "#foo p") 设置元素"#foo p"的click事件处理函数为handleClick。 
foo.on("click", handleClick) 的作用与上面的一样 

对于YUI的on方法,参数如下: 
Y.on('eventName', 'handler', 'elements', 'contextObject', 'arg1', ……);
 
1) 事件名。关于各事件在主要浏览器中的兼容性,可以参见这里: 
http://www.quirksmode.org/dom/events/index.html 
2) 事件处理句柄 
3) 元素,可以是多个,多个的写法是这样:["#foo p", "#bar"] 
4) 上下文对象,即事件处理函数中的this,如果忽略,就是target元素的Node 
举个例子:
var obj = { name: 'yleo77', email: 'XXOO@gmail.com' };
Y.on('click', handler, '#mybutton', obj);
function handler(){
    alert('hello ,'+ this.name);
}
 其中contxtObject可以绑定一个上下文对象,在handler里直接利用this来进行操作该对象。
参见百度的上下文对象
5) 参数,可以有多个,按顺序为事件处理函数中event之后的参数 


3. 移除事件响应函数 
有三种方式: 
1) 在事件名前加前缀,然后用YUI的detach移除 
2) 保存事件句柄,然后通过该句柄移除 
3) 用YUI的detach,指定事件名、处理函数和元素 
YUI().use('node-base', function(Y) {
  //an event handler:
    function handleClick(e) {
        Y.log(e);
    }
 
    var fooHandle = Y.on("eventcatgory|click", handleClick, "#foo");
 
    //第一种
    Y.detach('eventcategory|click');
	Y.detach('eventcategory|*');
 
    //第二种
    fooHandle.detach();
    Y.detach(fooHandle);
    
    //第三种
    Y.detach("click", handleClick, "#foo");
});
4.模拟事件:
模拟时间也就是模拟鼠标或键盘自动点击,自动执行一系列动作。
暂时不讨论。
 
5.使用available 和 contentready事件
available事件在一个元素刚刚出现在DOM树中时触发。 
contentready事件在一个元素和它的下一个元素都可以用getElementById获得
时触发,以保证该元素已加载完毕(除了动态加载的内容以外)
 
6.使用domready事件
 domready事件在DOM树构建完成时触发,有可能是在图像加载完毕以前
 
7.使用key事件
8.使用delegate方法
  事件代理(Event delegate)机制可以在父元素处唯一绑定一个listener监听该
父元素的多个子元素处发生的事件,以如下的html为例:
<div id="container">
    <ul>
        <li id="item-1"><em>Item Type One</em></li>
        <li id="item-2"><em>Item Type Two</em></li>
        <li id="item-3"><em>Item Type Three</em></li>
    </ul>
</div>
 以下这段代码将一listener绑定到"container",却监听着其3个子元素(<li>)处的click事件: 
 
YUI().use("event-delegate", function(Y) {
 
	Y.delegate("click", function(e) {
		Y.log("Default scope: " + this.get("id"));
 		Y.log("Clicked list item: " + e.currentTarget.get("id"));
		Y.log("Event target: " + e.target);	
		Y.log("Delegation container: " + e.container.get("id"));	
 	}, "#container", "li");
});
 
9.使用focus和blur事件
DOM的focus和blur事件是不做冒泡传递的,但YUI的Event utility的focus和blur事件
却可以,因此可以实现集中的事件处理。
以下是一段示例代码:
YUI().use("event-focus", function(Y) {
    var handle = Y.on("focus", function(e, arg1, arg2, etc) {
		Y.log("target: " + e.target + ", arguments: " + arg1 + ", " + arg2 + ", " + etc);
    }, "#toolbar", Y, "arg1", "arg2", "etc");
});
其中"#toolbar"是一个包含3个按钮的<div>,如下:
<div id="toolbar">
    <input type="button" id="button-cut" name="button-cut" value="Cut">
    <input type="button" id="button-copy" name="button-copy" value="Copy">
    <input type="button" id="button-paste" name="button-paste" value="Paste">
</div>
 例子全部代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Skinning via Progressive Enhancement using the Event Utility and the Loader</title>

<style type="text/css">
/*margin and padding on body element
  can introduce errors in determining
  element position and are not recommended;
  we turn them off as a foundation for YUI
  CSS treatments. */
body {
	margin:0;
	padding:0;
}
</style>

<link type="text/css" rel="stylesheet" href="../../build/cssfonts/fonts-min.css" />
<script type="text/javascript" src="../../build/yui/yui-min.js"></script>


<!--begin custom header content for this example-->
<style type="text/css">
	
    .yui3-js-enabled .yui3-checkboxes-loading {
		display: none;	
	}

</style>
<!--end custom header content for this example-->

</head>

<body class="yui3-skin-sam  yui-skin-sam">


<div id="toolbar">
    <input type="button" id="button-cut" name="button-cut" value="Cut">
    <input type="button" id="button-copy" name="button-copy" value="Copy">
    <input type="button" id="button-paste" name="button-paste" value="Paste">
</div>

<script type="text/javascript">
YUI().use("node","event", "console", function(Y) {
    var handle = Y.on("focus", function(e, arg1, arg2, etc) {
		Y.log("target: " + e.target + ", arguments: " + arg1 + ", " + arg2 + ", " + etc);
    }, "#toolbar", Y, "arg1", "arg2", "etc");
	(new Y.Console()).render();
});

</script>

</body>
</html>
 效果:


 

 
10.使用mouseenter和mouseleave事件
 YUI也提供mouseenter和mouseleave事件,代码如下所示:
YUI().use("event-mouseenter", function(Y) {
	Y.on("mouseenter", function (e) {
		Y.log("Mouse entered: " + this.get("id"));
	}, "#container");
	Y.on("mouseleave", function (e) {
		Y.log("Mouse left: " + this.get("id"));
	}, "#container");
});
 

 
11.使用hover事件
12.使用Touch event
13:跨设备手势支持
14.Cross-Device 手势支持
15.创建一个综合的DOM事件
16.创建自定义事件
 
  • 大小: 23.6 KB
  • 大小: 12.7 KB
分享到:
评论

相关推荐

    yui3-master.zip

    《深入理解YUI3:基于yui3-master.zip的探讨》 YUI(Yahoo! User Interface Library)是由雅虎公司开发的一套开源JavaScript库,它为Web开发者提供了丰富的功能和工具,以创建交互性强、性能优秀的网页应用。YUI3是...

    yui_2.9.0用于javascript基础教程

    适合图灵程序设计丛书web开发系列-javascript基础教程的学习使用

    YUI3 dialog组件

    **YUI3 Dialog组件详解** YUI3是Yahoo!推出的一款强大的JavaScript库,它提供了丰富的UI组件和工具,用于构建高性能、跨平台的Web应用程序。Dialog组件是YUI3中的一个重要部分,它允许开发者创建可交互的弹出窗口,...

    yui2.9

    3. **数据管理**:YUI 2.9提供了DataSource组件,用于处理数据请求、缓存和格式化。配合Connection Manager,可以实现与服务器的数据交换,支持JSON、XML等多种数据格式。 4. **国际化与本地化**:YUI 2.9支持多...

    YUI 入门教程YUI 入门教程YUI 入门教程

    YUI还提供了一些高级功能,如事件捕获和释放,可以通过`event.srcElement.setCapture()`和`event.srcElement.releaseCapture()`来控制。此外,`document.activeElement`可以获取当前焦点元素,`document.capture...

    yui3-3.17.2最新版

    YUI 3包含了一系列核心模块,如Event(事件处理)、Node(DOM操作)、IO(异步数据交互)等,同时还有许多可选的组件,如Grids(表格)、Charts(图表)、Form(表单元素)等,覆盖了前端开发的多个方面。...

    YUI 详细说明文档

    - **Event需要的引入**:通常需要先引入YUI的Event模块才能使用这些工具。 - **Event工具集提供的方法**:包括`YAHOO.util.Event.addListener`, `YAHOO.util.Event.removeListener`, `YAHOO.util.Event.on`, `...

    yui 3.1.2 源码 6MB大小 0资源分

    YUI 3的设计目标是模块化和轻量化,它引入了模块系统,使得开发者可以根据需要只加载必要的组件,从而降低页面加载时间。在3.1.2版本中,这一特性得到了充分的体现。源码中的每个模块都是独立的,通过AMD...

    yui.rar 例子

    在“yui.rar”里,可能包含有如“yui-core”、“yui-dom”、“yui-event”等基础模块,这些模块分别对应核心功能、DOM操作和事件处理。开发者可以通过精确定义配置,选择需要的模块,确保代码高效运行。 YUI还提供...

    YUi文档(中文的哦)

    ### YUI3中文文档知识点详解 #### YUI3概述及YUIGlobal对象介绍 **YUI3** 是一个开源的JavaScript库,旨在提供一系列工具和API,帮助开发者构建高性能、高质量的Web应用。YUI3的核心优势在于其模块化的设计、强大...

    yui_2.6.0r2

    2. Event:事件处理是Web开发中的关键部分,YUI的Event模块提供了一套跨浏览器的事件处理机制,可以方便地监听和处理各种用户交互事件。 3. Connection Manager:此组件用于处理Ajax请求,提供了异步与服务器通信的...

    Yahoo YUI2.7中文API 完整版

    **Yahoo YUI 2.7 中文 API 完整版** Yahoo User Interface Library(简称 YUI)是由 Yahoo 开发的一款开源 JavaScript 和 CSS 库,旨在帮助开发者构建高性能、可维护的 Web 应用程序。YUI 2.7 版本是这个库的一个...

    YUI js方法使用列子

    3. **Event(事件)**:YUI的事件系统支持事件监听、事件代理和事件分发,使得事件处理更加高效和灵活。 4. **Animation(动画)**:提供了平滑的CSS和属性动画,可以创建各种复杂的过渡效果。 5. **DataSource...

    yui最新版,api example docs

    1. **模块**:YUI由多个模块组成,如Core(核心)、Event(事件)、Node(DOM节点操作)、IO(异步数据请求)等。每个模块都提供了一组相关功能。 2. **类**:每个模块下有若干个类,这些类定义了对象的行为和属性...

    针对YUI框架API

    YUI的Event模块提供了全面的事件处理机制,包括事件监听、事件分发、事件阻止等,使得开发者可以轻松地响应用户的交互行为。 3. **DOM操作** Node模块提供了便捷的DOM操作接口,可以快速地选取、创建、修改DOM...

    yui-yuidoc-yuidoc-50-529-gc631758

    3. **YUI Event System**:强大的事件系统支持事件监听和分发,使得开发者可以轻松响应用户交互和页面变化。 4. **YUI DOM utilities**:提供了丰富的 DOM 操作方法,如选择元素、修改属性、添加/删除样式等,简化...

    雅虎YUI组建

    **3. JavaScript组件** - **Event**: 事件处理模块,支持DOM事件的监听、处理和移除,提供了一套跨浏览器的事件系统。 - **Node**: Node模块提供了对DOM节点的操作,如选择、创建、修改和删除等,简化了DOM操作。 - ...

    Yahoo JavaScript库 YUI源码

    3. **初始化YUI**:调用`YUI().use()`方法初始化YUI,并传入需要的模块。 4. **编写代码**:在回调函数中编写具体的应用逻辑,使用YUI提供的API。 **四、YUI与其他JavaScript库的比较** YUI与jQuery、Dojo、...

    YUI英文API文档

    2. **核心模块**:YUI的基础模块包括Event(事件处理)、Node(DOM操作)、IO(异步数据通信)等。这些模块是构建任何Web应用的基础,理解它们的工作原理非常重要。 3. **Node API**:Node模块提供了一组强大的方法...

    yui详细教程,适合新人

    - **event**: 处理DOM元素的事件绑定和解绑。 - **dom**: 提供DOM操作的方法,如查找、创建、修改元素。 - **node**: 建立在DOM基础上,提供了更友好的API进行DOM操作。 - **selector**: 实现CSS选择器引擎,用于...

Global site tag (gtag.js) - Google Analytics