最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JavascriptYUI读码日记之YAHOO.util.Dom-Part.20_YUI.Ext相关

来源:动视网 责编:小采 时间:2020-11-27 20:38:51
文档

JavascriptYUI读码日记之YAHOO.util.Dom-Part.20_YUI.Ext相关

JavascriptYUI读码日记之YAHOO.util.Dom-Part.20_YUI.Ext相关:batch: function(el, method, o, override) { // 让 el 始终为 HTMLElement el = (el && (el.tagName el.item)) el : Y.Dom.get(el); if (!el !method) { return false; } // 确定返回的
推荐度:
导读JavascriptYUI读码日记之YAHOO.util.Dom-Part.20_YUI.Ext相关:batch: function(el, method, o, override) { // 让 el 始终为 HTMLElement el = (el && (el.tagName el.item)) el : Y.Dom.get(el); if (!el !method) { return false; } // 确定返回的


batch: function(el, method, o, override) {
// 让 el 始终为 HTMLElement
el = (el && (el.tagName || el.item)) ? el : Y.Dom.get(el);

if (!el || !method) {
return false;
}

// 确定返回的对象
var scope = (override) ? o : window;

// 看起来是个 HTMLElement 或者不是 Array
if (el.tagName || el.length === undefined) {
return method.call(scope, el, o);
}

var collection = [];
for (var i = 0, len = el.length; i < len; ++i) {
collection[collection.length] = method.call(scope, el[i], o);
}

return collection;
},小马补充

batch 是 YUI Dom 库的核心之一。它最大的意义在于,它让 Dom 库的其他大多方法
的第一个参数可以是一个 id / 元素对象 或 一组 id/元素对象,减少了循环的使用。在这里可以找到 call 与 apply 的用法。在了解了 batch 以后,下来看 YUI.util.Dom 是怎么使用这一方法的,一口气看两个函数

getStyle: function(el, property) {
// toCamel 函数后面介绍
property = toCamel(property);

// 获取节点的样式
var f = function(element) {
return getStyle(element, property);
};

return Y.Dom.batch(el, f, Y.Dom, true);
},setStyle: function(el, property, val) {
property = toCamel(property);

// 设置节点的样式
var f = function(element) {
setStyle(element, property, val);
};

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

接下来,粗略看下 getXY

getXY: function(el) {
var f = function(el) {
// 确定元素是否“肉眼可见”
if ( (el.parentNode === null || el.offsetParent === null ||
this.getStyle(el, 'display') == 'none') &&
el != el.ownerDocument.body) {
return false;
}

return getXY(el);
};

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

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

文档

JavascriptYUI读码日记之YAHOO.util.Dom-Part.20_YUI.Ext相关

JavascriptYUI读码日记之YAHOO.util.Dom-Part.20_YUI.Ext相关:batch: function(el, method, o, override) { // 让 el 始终为 HTMLElement el = (el && (el.tagName el.item)) el : Y.Dom.get(el); if (!el !method) { return false; } // 确定返回的
推荐度:
标签: js 日记 javascript
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top