JavascriptYUI读码日记之YAHOO.util.Dom-Part.20
作者:gjfeh46999 | 来源:互联网 | 2022-03-31 09:05
batch: function(el, method, o, override) { &n
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,留下太多的“悬念”了,下一期着重将它们解决。
推荐阅读
-
本文详细介绍了Java中常见的锁类型,包括乐观锁与悲观锁、独占锁与共享锁、互斥锁与读写锁、可重入锁、公平锁与非公平锁、分段锁、偏向锁、轻量级锁、重量级锁以及自旋锁。每种锁的特性、作用及适用场景均有所涉及。 ...
[详细]
蜡笔小新 2024-12-04 14:45:08
-
随着全球化的加深,英语作为国际交流的主要工具,在日常生活和职业发展中扮演着越来越重要的角色。本文将提供一系列实用的方法,帮助你在家也能有效提升英语口语能力。 ...
[详细]
蜡笔小新 2024-12-04 14:40:31
-
-
本文详细介绍了MySQL数据库中的各种数据类型,包括整型、浮点型、字符型、文本型和日期时间型等,每种类型都有其特定的存储需求和使用场景。 ...
[详细]
蜡笔小新 2024-12-04 12:40:28
-
下面根据配置文件,来说明一些底层与webservices的关系:回顾一下servlet的映射模式。我们知道,servlet是从javax.servlet.http.HttpServ ...
[详细]
蜡笔小新 2024-12-04 12:24:57
-
一、数据更新操作DML语法中主要包括两个内容:查询与更新,更新主要包括:增加数据、修改数据、删除数据。其中这些操作是离不开查询的。1、增加数据语法:INSERTINTO表名称[(字 ...
[详细]
蜡笔小新 2024-12-04 12:15:42
-
本文详细介绍了如何通过Percona插件监控MySQL 5.7数据库,包括环境准备、插件安装、配置调整及数据测试等步骤,旨在为用户提供一个高效且稳定的监控解决方案。 ...
[详细]
蜡笔小新 2024-12-04 11:50:37
-
本文介绍了如何通过安装 VirtualBox 和 Vagrant 来快速搭建和管理虚拟机环境。我们将详细探讨如何选择合适的 Box 镜像,以及如何高效地下载、添加和管理这些镜像。 ...
[详细]
蜡笔小新 2024-12-04 11:47:13
-
本文详细探讨了React框架中组件的基本概念,特别是父组件与子组件之间的数据传递和方法调用方式。通过具体的代码示例,解释了如何利用props和refs实现组件间的高效通信。 ...
[详细]
蜡笔小新 2024-12-04 11:33:45
-
本文将详细介绍HTML中用于创建表单的标签及其基本用法,包括表单的主要特性和常用的属性设置。如果您正在学习HTML或需要了解如何在网页中添加表单,这将是一个很好的起点。 ...
[详细]
蜡笔小新 2024-12-04 11:22:47
-
本文探讨了两个关键的配置参数:ONT_RESTRICT_CUST_ITEMS 和 ONT_USE_MVIEW_FOR_ITEMS_LOV,分别用于控制销售订单行中客户项目的限制和项目值列表的物化视图使用。 ...
[详细]
蜡笔小新 2024-12-04 11:18:29
-
本文深入探讨了SqliLabs项目中的第38至45关,重点讲解了堆叠注入(Stacked Queries)的应用技巧及防御策略。通过实际案例分析,帮助读者理解如何利用和防范此类SQL注入攻击。 ...
[详细]
蜡笔小新 2024-12-04 11:17:35
-
在近期的一个项目需求中,需要在微信公众号内嵌入H5页面,并实现用户通过该页面上传图片的功能,包括拍摄新照片或从已有相册中选择。前端开发中采用了fetch API进行接口调用,但遇到了上传图片时数据无法正确传递的问题。 ...
[详细]
蜡笔小新 2024-12-04 10:56:13
-
本文将介绍如何利用Postman工具执行基本的日志写入和数据管理操作。通过本教程,您将了解如何连接至Elasticsearch服务,创建索引,存储及检索数据。 ...
[详细]
蜡笔小新 2024-12-04 10:48:31
-
本文介绍了在安装Redis后,如何通过修改配置文件使其以守护进程模式在后台运行,避免因控制台被占用而无法进行其他操作的问题。 ...
[详细]
蜡笔小新 2024-12-04 10:40:44
-
本文详细介绍了Linux操作系统的文件系统结构,包括其独特的树状目录体系、根目录的作用、目录与磁盘分区的关系等,并对各主要目录的功能进行了深入解析。 ...
[详细]
蜡笔小新 2024-12-04 10:39:45
-
gjfeh46999
这个家伙很懒,什么也没留下!