- 浏览: 145251 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
houfeng0923:
zensh 写道这种Promise用起来还是复杂了点,需要大量 ...
使用jQuery Deferred 和 Promise 创建响应式应用程序 -
zensh:
这种Promise用起来还是复杂了点,需要大量处理异步任务的同 ...
使用jQuery Deferred 和 Promise 创建响应式应用程序 -
Troland:
houfeng0923 写道Troland 写道
functi ...
JavaScript设计模式摘要(一) -
houfeng0923:
Troland 写道
function extend(subc ...
JavaScript设计模式摘要(一) -
Troland:
function extend(subclass,super ...
JavaScript设计模式摘要(一)
YUI3 ‘node’ 模块为创建、操作和获取DOM节点对象(集合)提供了丰富的方法。该模块包含两个主要的对象 Node和NodeList。每一个Node实例表示一个底层的DOM节点;每一个NodeList实例表示一组DOM节点集合。相比YUI2,YUI3 的 Node在模块组织和方法上有了很大的精简,但同样提供丰富的功能;下面简单介绍下node模块Node和NodeList的主要方法和使用。完整功能列表可参考官方API文档。
YUI3 Node API是基于标准的DOM API的,它提供一些便捷的属性和方法使常用的DOM操作变得更简单,实现代码也更简洁。熟悉标准的DOM API的开发者会发现使用Node实例非常熟悉。
获取Node实例最简单的办法就是使用YUI实例的“one”方法。Y.one方法接收页面上的DOM元素作为参数,也接收“选择字符串”作为参数。如果使用“选择字符串”作为参数,会得到“选择字符串匹配的第一个元素”。
注意:默认不包含CSS3选择器支持,要得到CSS3选择器支持,你需要引入“selector-css3”模块。
获取DOM元素(集合)
示例
YUI({ filter: 'raw' }).use('node',function(Y) { //单实例获取 Y.one('#id');//根据id返回Node实例 Y.one('tagName');//根据标签名(input、div)获取。返回第一个匹配的元素 Y.one('.className');//根据class样式名获取.返回第一个匹配的元素。 //获取多个实例 Y.all('#id1,#id2');//返回所选id的元素集合 Y.all('tagName');//返回标签为tagName的元素集合 Y.all('.className');//返回所有标记该样式的元素集合 Y.all('#id div');//获取id表示元素下所有的div元素 //另,引入‘selector-css3’模块可以使用css3支持的样式选择。 });
此外test方法,可以判断是否有元素匹配。 var bool = node.test('.class div');
使用Node对象
获取/设置Node属性
Node实例内的DOM节点的属性可以通过Y.Node实例的set和get方法访问。简单类型的属性(string、number、boolean)将直接针对底层的DOM节点操作。set和get方法返回操作的Node实例便于继续操作,不仅如此,大部分的Node方法都支持这种链式调用。
除了set和get方法外,Node还提供了setAttribute/getAttribute、setAttrs/getAttrs及removeAttribute,
提供直接为底层DOM元素设置属性的功能;
set与setAttribute方法的比较
set :设置Node定义的属性(见下面Node扩展属性介绍),及role属性给node(见下面ARIA语义属性支持);也可以设置该dom元素支持的属性给dom。
setAttribute:设置dom元素支持的属性,也可以设置自定义属性给dom。
同理来区分get与getAttribute。
示例:
YUI({ filter: 'raw' }).use('node',function(Y) {
var input1 = Y.one('#input1');
//ARIA语义属性支持
input1.set('role','inputname');
//Node.ATTRS属性,见 Node API 属性
input1.set('offsetHeight',30);
//dom支持的属性。如 innerHTML等。
input1.set('disabled',true);
input1.get('parentNode');
var input2 = Y.one('#input2');
//dom支持属性
input2.setAttribute('disabled',true);
//自定义属性
input2.setAttribute('custAttr','v');
});
获取/设置Node数据
getData/setData/clearData方法:为node对象绑定自定义数据。注意数据关联的是node而非dom。
设置样式
相关方法:hasClass()、 addClass()、removeClass()、 replaceClass()、toggleClass()、
getStyle()、setStyle()、setStyles()
以上方法设置/获取对应dom节点的样式。使用可参考api参数说明。
位置相关方法
Node提供了一系列获取和设置dom位置相关的方法
getX() getY() getXY()
setX() setY() setXY()
swap(otherNode) //与参数node元素交换位置。只改变dom结构中的位置;
swapXY(otherNode) //与参数node交换页面显示位置;dom树位置不变,只改变dom的top left及position属性;
scrollIntoView()
get('region'); //通过Node定义的region属性,可以获取该元素在页面中占据的区域。返回对象:
{width,height,top,left}。
节点操作及判断
Node支持丰富的dom节点操作方法,而且大部分方法与W3C dom操作方法命名一致。熟悉dom操作函数的话,了解起来也非常的简单。具体方法可参考Node api 方法列表。
Node静态方法
Y.Node.create(htmlString,[doc]) //根据html字符串创建Node对象;
Y.Node.getDOMNode(node) //返回node对象表示的底层dom对象;
Y.Node.addMethod(..) //为Node.prototype添加方法。
Node扩展属性
Node的扩展属性定义在Node.ATTRS中,在YUI3中,ATTRS是定义在类上的可配置属性,会在类实例化时将ATTRS中定义的属性赋予实例对象;
在API中列出了一下扩展属性:
--只读--
children
docHeight、docWidth
winHeight、 winWidth
docScrollX、docScrollY
region
viewportRegion
--可读写--
scrollTop、scrollLeft
offsetHeight、offsetWidth
text
关于属性的含义可参考api文档;这些属性可通过Node的get和set方法获取或设置。
ARIA语义属性支持
Node接口具有ARIA支持。当和Node内置的CSS选择器查询一起使用时,很容易应用、管理一个Node实例的 roles,states 和 properties 。
ARIA Roles,States 和 Properties提升了HTML的语义。让开发者能更精确地描述页面某板块的目的,或者提升DHTML widget对需要辅助工具用户的使用体验。
通过set方法应用ARIA Roles,States 和 Properties。比如,把id为toolbar的<div>的role设置为“toolbar”。
YUI().use('node', function(Y) {
var node = Y.one('#toolbar').set('role', 'toolbar');
});
Node内置的CSS选择器查询支持、链式方法、在一个Node实例上设置多个属性的能力,让我们在创建有很多树状子目录的DHTML widget时,很容易地应用ARIA Roles,States 和 Properties。比如,要创建一个menubar widget,我们需要将“menubar”角色指定给代表menubar的根DOM元素,再把“menu”角色指定给代表“menu”(菜单)的根 DOM元素。然后,因为菜单项默认是隐藏的,每个菜单都需要指定aria-hidden状态。Node接口让我们用一行代码就完成上述操作。
YUI().use('node', function(Y) {
Y.one('#rootmenu').set('role', 'menubar').all('.menu').setAttrs({ role: 'menu', 'aria-hidden': true });
});
事件注册
使用on方法为Node实例添加事件监听器。通过监听函数第一个参数传入的事件对象是一个event facade,这个event facade和Node API一样,将浏览器差异统一化,提供一个基于W3C标准的标准API,与DOM事件配合工作。原来返回DOM节点的事件对象属性将返回Y.Node实 例。
示例如下:
YUI().use('node', function(Y) {
Y.one('#demo').on('click', function(e) {
e.preventDefault();
alert('event: ' + e.type + ' target: ' + e.target.get('tagName'));
});
});
关于事件的详细介绍请参考Event模块。
使用NodeList对象
Y.NodeList提供了和Node类似的操作多个节点的单一接口。NodeList API是Node API的简化版本,允许批量进行常见操作。Y.all方法是获取NodeList最简单的方法。
示例:设置所有div元素样式
Y.all('div').setStyle('border','1px solid red');
此外,NodeList支持集合相关的操作方法,如下:
concat(nodeList/Array)
each()
even()/odd()
filter()
indexOf()
isEmpty()
item(index)
pop()
push()
shift()
size()
slice()
splice()
some()
评论
发表评论
-
Twitter Flight 学习小结
2013-08-29 10:57 1913链接:twitter flight 关键字: 基于事件交 ... -
使用jQuery Deferred 和 Promise 创建响应式应用程序
2012-11-12 20:41 6180翻译自:Creating Responsive Applica ... -
编写 Sublime Text2 的 nodejs debug 插件
2012-08-27 22:07 4659使用sublime text2 编写 node 代码 ... -
Image beacon
2012-05-06 11:42 1647转帖:http://www.denisdeng.com/?p= ... -
YUI3学习(十)---基于组件框架的Widget实例(GoogleMapWidget)
2012-03-03 20:37 2867本文遵循YUI3 Widget组件设计理念,继承YUI Wi ... -
Google Maps API V3 学习摘要
2012-03-03 20:40 3805Google Maps API V3 学习摘要 ... -
大话HTML DOM与XML DOM的区别与联系【转】
2011-10-04 11:21 2305原文链接: http://deve ... -
dojo类机制模拟实现
2011-09-29 11:00 1592偶然在infoq上看到朋友的文章《dojo类机制简 ... -
web前端研发工程师编程能力成长之路 [转]
2011-09-29 10:26 1999【背景】 如果你是刚进入WEB前端研发领域,想试试这 ... -
Web开发乱码分析总结
2011-09-28 17:08 1612今天对前端开发常见的乱码情况进行了汇总测试和分析,并做了 ... -
document.documentElement 与 document.body 的 scrollWidth、offsetWidth、clientWidth
2011-09-28 16:54 1572注:(scrollHeight、o ... -
DOCTYPE, HTML和XHTML, Strict DTD和Transitional DTD, Quirks Mode和Standard Mode
2011-09-26 16:53 1652转自:http://blog.csdn.net/w ... -
YUI3学习(九)---组件框架之 Widget
2011-08-10 21:53 2899Widget部件类是YUI3所 ... -
YUI3学习(八)---组件框架之 Plugin
2011-08-08 17:42 2310插件可以让你无侵入地为衍生自Base类的宿主对象 ... -
YUI3学习(七)---组件框架之 Base
2011-08-05 22:45 2116Base组件 Base被设计为那些衍生自Attribute和 ... -
dfssdfsfsfs
2011-08-05 14:37 0sdf s -
JavaScript链式调用小结
2011-08-03 22:47 4830zYUI3 Node对象实现链式调用的方式如下: Y. ... -
JavaScript设计模式摘要(一)
2011-08-03 22:52 2028---------------------------- ... -
YUI3学习(六)---组件框架之 Attribute
2011-08-01 22:57 25651,YUI3组件框架 组 ... -
YUI3 AOP
2011-07-28 23:10 0YUI3在’event-custom’模块的Y.Do类提 ...
相关推荐
通过“yui3-master.zip”这个压缩包,开发者不仅可以了解到YUI3的基本架构,还可以通过阅读源码来学习和掌握JavaScript的最佳实践,提升自身的前端开发能力。无论是初学者还是经验丰富的开发者,都能从中受益匪浅。...
YUI 3包含了一系列核心模块,如Event(事件处理)、Node(DOM操作)、IO(异步数据交互)等,同时还有许多可选的组件,如Grids(表格)、Charts(图表)、Form(表单元素)等,覆盖了前端开发的多个方面。...
这篇博文“YUI3 中tree的两种实现”探讨了如何在YUI3中创建和管理树形结构。 1. **YUI3 TreeView组件** YUI3 TreeView组件是YUI3核心库的一部分,它允许开发者创建交互式的树结构。这个组件支持节点的添加、删除、...
### YUI 3 Cookbook 关键知识点解析 #### 一、YUI 3 概述与书籍价值 **YUI 3** 是一个由雅虎开发的JavaScript库,它提供了丰富的功能来帮助开发者创建高质量的Web应用程序。这本书《YUI 3 Cookbook》由Evan Goer...
关于YUI的学习,这是一个关于前端开发框架YUI的深入探讨。YUI,全称为Yahoo! User Interface Library,是由雅虎公司开发并开源的一款JavaScript库,旨在帮助开发者构建高性能、可扩展且易于使用的Web应用程序。YUI的...
**YUI3简介** YUI(Yahoo! User Interface Library)是雅虎公司开发的一个开源JavaScript库,主要用于构建富互联网应用程序(RIA)。...通过学习和掌握YUI3,开发者能够更高效地编写可维护、高性能的前端代码。
8. **API文档**:YUI3.7.3附带的API文档详细阐述了每个模块的功能和用法,是开发者学习和使用YUI的重要参考资料。 9. **响应式设计支持**:YUI3包含了一些工具,如Resize Utility,帮助开发者实现响应式设计,使...
**Yahoo YUI 知识点详解** Yahoo YUI(Yahoo User Interface Library)是Yahoo公司推出的一个开源JavaScript库,主要用于构建富互联网应用程序(Rich Internet ...对于学习和理解前端开发,了解YUI仍然是有价值的。
YUI 3的设计目标是模块化和轻量化,它引入了模块系统,使得开发者可以根据需要只加载必要的组件,从而降低页面加载时间。在3.1.2版本中,这一特性得到了充分的体现。源码中的每个模块都是独立的,通过AMD...
3. **学习价值**:对于前端开发者和Java开发者而言,阅读YUI Compressor的源码可以帮助他们更好地理解JavaScript和CSS的压缩过程,了解代码优化的技术,这对于提升自己的编程技能非常有益。 **二、YUI Compressor ...
### YUI 详细说明文档 ...以上概述了YUI的一些核心概念和技术细节,希望对学习YUI有所帮助。YUI不仅提供了强大的工具库,还有一系列实用的组件,这些都大大简化了Web开发的工作量,并提高了项目的质量。
四、YUI的使用与学习 学习YUI,首先需要掌握JavaScript基础知识,然后通过官方文档了解YUI的模块化结构和API。官方文档详细且全面,包含了大量的示例代码,便于开发者快速上手。同时,社区资源丰富,有许多优秀的...
**YUI(Yahoo! User Interface Library)详解** YUI,全称为Yahoo! User Interface Library,是由...通过上述资源,结合“yui教程”压缩包中的资料,你可以逐步深入学习并掌握YUI,为自己的Web开发工作增添强大助力。
YUI还提供了`YUI.DOM.addClass/removeClass`方法来管理元素的类,以及`YUI.Node.show/hide`控制提示元素的可见性。 **ExtJS** ExtJS是一个完整的MVC(Model-View-Controller)框架,专门用于构建复杂的桌面和移动...
3. **Node API**:Node模块提供了一组强大的方法来操作DOM元素,如创建、查找、修改和管理DOM节点。了解如何使用`Y.Node`和`Y NodeList`对象可以极大提高你的DOM操作效率。 4. **事件系统**:YUI的事件系统允许你...
YUI(Yahoo! User Interface Library)是Yahoo开发的一个开源JavaScript库,主要用于构建富互联网应用程序(RIA)。...无论你是初学者还是经验丰富的开发者,这个压缩包都能为你的YUI学习之路提供有力的支持。
3. **Node(节点)**:对DOM元素的操作进行了封装,提供了更方便的方法来操作页面元素。 4. **Animation(动画)**:创建和控制各种动画效果。 5. **Selector(选择器)**:基于CSS3选择器,用于选取DOM元素。 6....
这个“yui开发小练习(高手勿入)”的压缩包可能包含了一些初级到中级的YUI编程实践,适合那些正在学习YUI的初学者参考和学习。 在YUI的开发过程中,有几个核心概念和知识点是必须掌握的: 1. **模块化编程**:YUI...
### 学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点) #### 引言 在本篇文章中,我们将深入探讨如何使用YUI.Ext库中的TreePanel组件来实现异步获取树节点的功能。不同于同步加载方式,异步加载能够显著...