YUI 3 学习笔记(2)- Node

Node是用来操作DOM node的工具,实际上每一个Node实例都代表着一个DOM node,每一
个NodeList都代表着一组DOM node.

从YUI2.x到YUI3.0相关的api发生了一些变化,具体可以参见本文的最后部分。

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

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

然后加载相应模块:

YUI().use('node', function(Y) {
});


2. 获得Node
可以使用YUI.one()获取Node,该方法的参数可以是一个Node,也可以是一个选择器(selector),
在使用选择器时,返回第一个匹配的元素。默认情况下css3选择器不被支持,如果要使用,需要
加载“selector-css3”模块。关于css3 selector可以参见这里:
[url]http://www.w3.org/TR/css3-selectors[/url]
以下是使用YUI.one()的例子:

YUI().use('node', function(Y) {
var node1 = Y.one('#main');
var node2 = Y.one(document.body);
});


3. 访问Node属性
可以使用Node的set,get方法访问Node的属性,需要注意的是如果返回节点的话返回的是
YUI Node而不是DOM node,这一点在其他地方也要注意。
以下是相关的例子:

YUI().use('node', function(Y) {
var node = Y.one('#foo');
var parent = node.get('parentNode'); // Node instance
var html = 'I am "' + node.get('id') + '".';
html += 'My parent is "' + parent.get('id') + '"';
node.set('innerHTML', html);
});


4. 事件监听
  可以用on方法添加事件监听器:

YUI().use('node', function(Y) {
Y.one('#demo').on('click', function(e) {
e.preventDefault();
alert('event: ' + e.type + ' target: ' + e.target.get('tagName'));
});
});


5. DOM方法
Y.Node提供了所有DOM node的原有方法

6. NodeList的使用
NodeList提供了与Node相似的API,但是它的处理时对所有NodeList中的所有Node作用的。
例如如下代码对demo的所有子元素添加'bar'类:

YUI().use('node', function(Y) {
Y.one('#demo').get('children').addClass('bar');
});


7. 查找
Node提供one,all,test方法分别实现查找第一个匹配元素,查找所有匹配元素,测试
是否存在匹配元素的功能

8. YUI 2.x和YUI 3.x的对应表
YUI2.x的Node功能是由YAHOO.util.Dom提供的,其与YUI3.0的对应关系如下:
[table]
|2.x (via YAHOO.util.Dom)|3.0
|addClass | myNode.addClass
|batch | NodeList[methodName], NodeList.each, or Y.each
|generateId | Y.guid
|get | Y.one
|getAncestorBy | myNode.ancestor
|getAncestorByClassName | myNode.ancestor
|getAncestorByTagName | myNode.ancestor
|getChildren | myNode.get('children')
|getChildrenBy | myNode.all
|getClientRegion | myNode.get('viewportRegion')
|getDocumentHeight | myNode.get('docHeight')
|getDocumentScrollLeft | myNode.get('docScrollX')
|getDocumentScrollTop | myNode.get('docscrollY')
|getDocumentWidth | myNode.get('docWidth')
|getElementsBy | myNode.all
|getElementsByClassName | myNode.all
|getFirstChild | myNode.one
|getFirstChildBy | myNode.one
|getLastChild | myNode.one
|getLastChildBy | myNode.one
|getNextSibling | myNode.next
|getNextSiblingBy | myNode.next
|getPreviousSibling | myNode.previous
|getPreviousSiblingBy | myNode.previous
|getRegion | myNode.get('region')
|getStyle | myNode.getStyle
|getViewportHeight | myNode.get('winHeight')
|getViewportWidth | myNode.get('winWidth')
|getX | myNode.getXY
|getY | myNode.getXY
|getXY | myNode.getXY
|hasClass | myNode.hasClass
|inDocument | myNode.inDoc
|insertAfter | myNode.insert
|insertBefore | myNode.insert
|isAncestor | myNode.contains (Note myNode.contains(myNode) === true)
|removeClass | myNode.removeClass
|replaceClass | myNode.replaceClass
|setStyle | myNode.setStyle
|setX | myNode.setXY
|setY | myNode.setXY
|setXY | myNode.setXY
[/table]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值