`

YUI3 event小结

 
阅读更多

其它事件,参考:http://yuilibrary.com/yui/docs/event/

use("______", ...) What's in it?
event-base

The core DOM event subscription system as well as the DOM lifecycle eventsdomreadycontentready, and available. Notably, it does NOT include

  • event delegation
  • event simulation
  • synthetic events

If you've use()d anything, you probably have this already.

event

event定义在event module中,除了

event-simulate

 

node-event-simulate

 

node-event-delegate

这三个模块中外,其它模板都包含event

 

 

event module提供了如下几个类:详情参考http://yuilibrary.com/yui/docs/api/modules/event.html

 

 

event-delegate & 
node-event-delegate
事件委托和节点委托功能
event-simulate & 
node-event-simulate

模拟事件

Note: 伪造事件不应该用在面向用户的代码

event-synthetic

事件合成

event-flick 增加了一个“甩尾”事件或触摸鼠标交互
event-focus blur和focus不支持冒泡事件的,event-focus这个模块是让focus和blur支持冒泡事件?
event-gestures

事件的手势,如gesturemove,touchstart等

在发下模块中:

  • "event-touch"
  • "event-move"
  • "event-flick"

In the future, may contain more gesture abstraction modules.

event-hover 增加了一个“悬停事件,一个用于启动和一个结束
event-key 增加了一个“键盘”事件,当键被按下时
event-mouseenter 增加一个 "mouseenter" and "mouseleave" 事件,相当于 "mouseover" 和"mouseout".
event-mousewheel

鼠标滚轮事件,目前,这一事件只能认购y.on(“mousewheel回调函数)

event-move

增加了“gesturemovestart(手势行动的开始gesturemove手势行动的)和“gesturemoveend手势行动的结束事件,

根据客户设备作为抽象在鼠标和触摸等事件

event-outside 外部事件
  • blur
  • change
  • click
  • dblclick
  • focus
  • keydown
  • keypress
  • keyup
  • mousedown
  • mousemove
  • mouseout
  • mouseover
  • mouseup
  • select
  • submit

也可以定义外部事件,Y.Event.defineOutside(eventType),Y.Event.defineOutside(eventType, "yonderclick").

 

event-resize

增加了一个“windowresize事件,只有fire()后,用户已停止拖动窗口的大小调整手柄这种标准化的window.onresize事件跨越浏览器

这样调用: Y.on("windowresize", callback);

使用Y.on订阅一个自定义事件,通过调用Y.fire方法可以在程序中触发自定义事件。

event-touch 触摸事件
event-valuechange

增加了一个“valuechange”事件触发时,输入元素文本的变化

valuechange事件时引发的价值属性文本输入字段或变化的结果,一个按键鼠标操作输入法编辑器拼音输入事件

 

 

使用Y.on订阅一个自定义事件,通过调用Y.fire方法可以在程序中触发自定义事件。

 

  1. YUI().use('event-custom'function(Y) {  
  2.    Y.on('customapp:started'function() {  
  3.       alert('YUI 3');  
  4.     
  5.   });  
  6.   
  7.     Y.fire('customapp:started');  
  8. });  

 

 

EventFacade相关属性
EventFacade包装原始的event对象,在DOM事件及自定义事件中作为第一个参数传递给回调函数。
关于DOM事件的event属性可以参考w3c相关讲解 
本节主要说明EventFacade的几个常用属性和方法:
Y.on('click',function(e){
this; //注册事件的对象 ;如果是委托事件,this 不会代表委托对象,而只表示被委托的单个对象。
  //如果是NodeList注册,返回NodeList集合对象; 
e.target;          //触发事件的对象(在click事件中即被点击的对象,并不一定是注册的对象)
e.currentTarget ;   // 注册事件的对象;如果是委托事件,也只表示被委托的单个对象。
 // this不同,如果是NodeList注册,返回集合中被点击的对象  
e.container;          // 委托对象 ,非委托事件 返回 undefined
  
e.stopPropagation(); //停止事件冒泡。
e.preventDefault();  //阻止事件默认行为。
e.halt(); //相当于调用stopPropagation() 和 preventDefault()

}

once用法:

当加载dom完成后,只执行一次事件,和on的使用格式一样:
下面的例子,当点击test时,会弹出test,再点击时showMsg就不会被执行,而showMsg1却可执行无限次
<script type="text/javascript">
   YUI().use("node",function(Y){
	   function showMsg(){ alert('test');}
	    function showMsg1(){ alert('test1');}
       Y.one('#demo').once('click',showMsg);
	   Y.one('#demo').on('click',showMsg1);
     
   });
</script>
  <div id="demo" style="cursor:pointer;">test</div>
 
  另外:传递一个数组事件可以调用相同的函数
inputNode.on(['focus', 'mouseover'], activate);

对象可订阅多个事件每个都有自己的回调函数

function validate(e) { ... }
function clearPlaceholder(e) { ... }

var groupSub = inputNode.on({
    blur    : validate,
    keypress: validate,
    focus   : clearPlaceholder
});
groupSub.detach();//删除所有监听事件
事件分类node('myclass|click',callback)
node.on('foo-category|click', callback);

node.detach('foo-category|click');
// OR
node.detach('foo-category|*')
创建dom自定义事件:
Y.Event.define(type, config)

Y.Event.define("tripleclick", {

    // The setup logic executed when node.on('tripleclick', callback) is called
    on: function (node, subscription, notifier) {
        // supporting methods can be referenced from `this`
        this._clear(subscription);

        // To make detaching easy, a common pattern is to add the subscription
        // for the supporting DOM event to the subscription object passed in.
        // This is then referenced in the detach() method below.
        subscription._handle = node.on('click', function (e) {
            if (subscription._timer) {
                subscription._timer.cancel();
            }

            if (++subscription._counter === 3) {
                this._clear(subscription);

                // The notifier triggers the subscriptions to be executed.
                // Pass its fire() method the triggering DOM event facade
                notifier.fire(e);
            } else {
                subscription._timer =
                    Y.later(300, this, this._clear, [subscription]);
            }
        });
    },

    // The logic executed when the 'tripleclick' subscription is `detach()`ed
    detach: function (node, subscription, notifier) {
        // Clean up supporting DOM subscriptions and other external hooks
        // when the synthetic event subscription is detached.
        subscription._handle.detach();

        if (subscription._timer) {
            subscription._timer.cancel();
        }
    },

    // Additional methods can be added to support the lifecycle methods
    _clear: function (subscription) {
        subscription._counter = 0;
        subscription._timer = null;
    },
    
    ...
});
调用:Y.one('#hellokitty').on('tripleclick', omgYayCantClickEnough);
分享到:
评论

相关推荐

    yui3-master.zip

    在“yui3-master.zip”中,我们可以看到不同模块的源代码文件,如“build”目录下的“node”, “event”, “dom”等,这些都是YUI3的核心模块。 2. **事件系统** YUI3的事件系统是其强大功能之一,它允许开发者...

    YUI3 dialog组件

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

    YUI3 中tree的两种实现

    这篇博文“YUI3 中tree的两种实现”探讨了如何在YUI3中创建和管理树形结构。 1. **YUI3 TreeView组件** YUI3 TreeView组件是YUI3核心库的一部分,它允许开发者创建交互式的树结构。这个组件支持节点的添加、删除、...

    yui3-3.17.2最新版

    在实际使用YUI 3.17.2时,开发者可以通过`yui3-3.17.2`这个压缩包文件获取所有必要的资源。这个压缩包中包含了库的源码、示例、文档和其他辅助工具。开发者可以按照项目需求,选择合适的模块和组件进行集成。 在...

    从YUI2到YUI3看前端的演变

    从YUI2到YUI3看前端的演变

    从YUI2到YUI3看前端的演变 pdf

    YUI3 引入了粒度更细的模块管理方式,通过异步 HTTP 请求加载模块、然后执行回调来加载和使用模块。现场有很多人提出疑问,大家无非关心的是“效率”二字。个人以为在现阶段,这种方式有一点激进,否能为广大用户所...

    yui.rar 例子

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

    YUI3 完整包

    Yahoo! UI Library (YUI) 是一个开放源代码的 JavaScript 函数库,为了能建立一个高互动的网页,它采用了AJAX, DHTML 和 DOM 等程式码技术。它也包含了许多 CSS 资源。

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

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

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

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

    YUI3.6文档及示例

    1. **模块系统**:YUI3引入了模块化设计,允许开发者按需加载组件,降低页面的初始化时间。模块可以通过`YUI.use()`方法来加载,实现了代码的异步加载和依赖管理。 2. **事件系统**:YUI的事件处理机制强大且灵活,...

    yui_2.6.0r2

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

    YAHOO YUI3简单入门

    **YUI3简介** YUI(Yahoo! User Interface Library)是雅虎公司开发的一个开源JavaScript库,主要用于构建富互联网应用程序(RIA)。YUI3是YUI的第三个主要版本,它在设计时注重模块化、可扩展性和性能优化,提供了...

    YUi文档(中文的哦)

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

    Yahoo YUI2.7中文API 完整版

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

    YUI3.7.3 最新版本 带API

    1. **模块系统**:YUI3引入了CommonJS风格的模块系统,允许开发者通过`YUI.use()`方法加载所需模块,实现按需加载,减少页面初始化时的加载量。 2. **事件处理**:YUI3提供了强大的事件系统,支持DOM事件、自定义...

    YUI 详细说明文档

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

    针对YUI框架API

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

    yui 资源包

    3. **事件处理**:YUI的事件系统强大,支持事件绑定、解绑、事件冒泡等,使得用户交互编程简单易行。 4. **动画效果**:通过Transition和Anim模块,可以轻松实现平滑的CSS3动画和JavaScript动画效果。 5. **数据绑定...

Global site tag (gtag.js) - Google Analytics