Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
发布时间:2016-12-30 来源:查字典编辑
摘要:batch:function(el,method,o,override){//让el始终为HTMLElementel=(el&&(el.ta...

batch:function(el,method,o,override){

//让el始终为HTMLElement

el=(el&&(el.tagName||el.item))?el:Y.Dom.get(el);

if(!el||!method){

returnfalse;

}

//确定返回的对象

varscope=(override)?o:window;

//看起来是个HTMLElement或者不是Array

if(el.tagName||el.length===undefined){

returnmethod.call(scope,el,o);

}

varcollection=[];

for(vari=0,len=el.length;i<len;++i){

collection[collection.length]=method.call(scope,el[i],o);

}

returncollection;

},小马补充

batch是YUIDom库的核心之一。它最大的意义在于,它让Dom库的其他大多方法

的第一个参数可以是一个id/元素对象或一组id/元素对象,减少了循环的使用。在这里可以找到call与apply的用法。在了解了batch以后,下来看YUI.util.Dom是怎么使用这一方法的,一口气看两个函数

getStyle:function(el,property){

//toCamel函数后面介绍

property=toCamel(property);

//获取节点的样式

varf=function(element){

returngetStyle(element,property);

};

returnY.Dom.batch(el,f,Y.Dom,true);

},setStyle:function(el,property,val){

property=toCamel(property);

//设置节点的样式

varf=function(element){

setStyle(element,property,val);

};

Y.Dom.batch(el,f,Y.Dom,true);

},有关这两个函数的具体用法,可以看下相关的文档。其实从参数上就很容易理解怎么使用。看上面的两个函数有利于理解YAHOO.util.Dom.batch的调用方式。

接下来,粗略看下getXY

getXY:function(el){

varf=function(el){

//确定元素是否“肉眼可见”

if((el.parentNode===null||el.offsetParent===null||

this.getStyle(el,'display')=='none')&&

el!=el.ownerDocument.body){

returnfalse;

}

returngetXY(el);

};

returnY.Dom.batch(el,f,Y.Dom,true);

},getX与getY方法也是调用此函数,只是获取返回值的数组元素不一样。由于浏览器的兼容问题,提供给用户的YAHOO.util.Dom.getXY也仅仅是判断变量以后,再扔给最为复杂的内部getXY函数。

OK,留下太多的“悬念”了,下一期着重将它们解决。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类