descendants(element) -> [HTMLElement...]
返回 element 的所有后代节点,结果为一个数组,数组元素已经过扩展。
注意:所有 Prototype 的 DOM 扩展方法均忽略文本节点,仅返回元素节点。
样例
<div id="australopithecus">
<div id="homo-herectus">
<div id="homo-neanderthalensis"></div>
<div id="homo-sapiens"></div>
</div>
</div>
$('australopithecus').descendants();
// -> [div#homo-herectus, div#homo-neanderthalensis, div#homo-sapiens]
$('homo-sapiens').descendants();
// -> []
...
descendantOf(element, ancestor) -> Boolean
判断 element 是否是参数 ancestor 指定元素的后代节点。
因为 Element.descendantOf 内部对 ancestor 应用了 $(),所以参数 ancestor 既可以是元素,也可以是元素的 ID。
样例
<div id="australopithecus">
<div id="homo-herectus">
<div id="homo-sapiens"></div>
</div>
</div>
$('homo-sapiens').descendantOf('australopithecus');
// -> true
$('homo-herectus').descendantOf('homo-sapiens');
// -> false
...
cumulativeScrollOffset(element) -> [Number, Number] 或 { left: Number, top: Number }
在内含滚动条的容器中计算元素的累积滚动偏移值。
译注:假定返回值为 offset,则 X 轴坐标可通过 offset[0] 获取,也可以通过 offset.left 获取,Y 轴坐标可通过 offset[1] 获取,也可通过 offset.top 获取。
累加元素及它的所有先代节点的 scrollLeft 和 scrollTop。
该方法常用于在多个滚动容器(例如在一个可滚动的容器中包含一个可滚动的文档)中计算元素的滚动偏移值。
注意:所有返回值都仅有数字,单位为像素。
...
cumulativeOffset(element) -> [Number, Number] 或 { left: Number, top: Number }
返回 element 相对于页面左上角的坐标。
译注:假定返回值为 offset,则 X 轴坐标可通过 offset[0] 获取,也可以通过 offset.left 获取,Y 轴坐标可通过 offset[1] 获取,也可通过 offset.top 获取。
累加元素及它的所有先代节点的 offsetLeft 和 offsetTop。
注意:所有返回值都仅有数字,单位为像素。
clonePosition(element, source[, options]) -> HTMLElement
从 source 中复制参数 options 指定的位置和/或尺寸的相关信息到 element。
注意:该方法根据 CSS containing block 的规则判定元素的位置信息是否相同,调用该方法后,target 和 source 的位置信息按照上述规则严格匹配。
选项
名称
默认值
描述
setLeft
true
克隆 source 的 CSS 属性 left 到 element。
setTop
true
克隆 source 的 CSS 属性 top 到 elem...
cleanWhitespace(element) -> HTMLElement
移除元素中所有仅包含空白的文本节点,返回移除空白文本节点后的元素。
译注:所谓空白文本节点,是根据 XML 中的概念得来的,例如,有以下 HTML 代码:
<div>
<p>第一段</p>
</div>
<div> 的子节点(element.childNodes)包括 <p> 和空白文本节点(对于空白文本节点,各种浏览器的处理方式不一样), 这些空白文本节点有时对处理节点的顺序关系会造成影响,如上述 HTML 代码中我们通常认为 <p> 没有前导和后继兄弟节点, 但因为空白文本节点的干扰,程序可能会认为 <p> 有一个前导兄弟节点和一个后继兄弟节点。为消除这些干...
classNames(element) -> Enumerable
返回一个新的 ClassNames 的实例,该实例是一个 Enumerable 对象,用于读写元素的 CSS 类名称。
Element#classNames 已被抛弃。请使用 Element#addClassName、 Element#removeClassName 和 Element#hasClassName 代替。
如果你需要访问 CSS 类名称,并返回一个数组,试试用 $w(element.className)。
事实上,这意味着你可以通过一个 Enumerable 访问元素的 CSS 类名称列表,而不像原生的 className 属性仅只是一个字符串。
在这个方法结束前,返回的 Enumerable 对象已经被扩展了一系列用于处理 CSS 类名的方法:set(className)、 add(className) 和 remove(cl...
childElements(element) -> [HTMLElement...]
返回元素的所有子元素,结果为一个数组,数组元素已经过扩展。
返回的数组成员按照元素在页面中的顺序进行排列(例如:索引 0 表示最顶部的子元素)。
注意:所有 Prototype 的 DOM 扩展方法均忽略文本节点,仅返回元素节点。
样例
<div id="australopithecus">
<div id="homo-erectus">
<div id="homo-neanderthalensis"></div>
<div id="homo-sapiens"></div>
</div>
</div>
$('australopithecus').childElements();
// -> [div#homo-erectus]
$('homo-erectus'...
ancestors(element) -> [HTMLElement...]
返回 element 的所有先代节点(父节点、父节点的父节点...一直到最顶层节点),结果为一个数组,数组元素已经过 扩展。
返回数组的第一个元素是 element 的直接先代节点(即 parentNode),第二个元素是它的祖父节点, 依此类推,直到 html 元素。html 总是数组的最后一个成员,除非你显式查找它的先代节点。 但是你不愿意这么做,不是吗?
注意:所有 Prototype 的 DOM 扩展方法均忽略文本节点,仅返回元素节点。
样例
<html>
[…]
<body>
<div id="father">
<div id="kid"> </div>
</div>
</bo...
Element.adjacent(element[, selectors...]) -> [HTMLElement...]
someElement.adjacent([selectors...]) -> [HTMLElement...]
查找当前元素的所有兄弟节点,若指定选择器,则这些节点必须与给定的选择器(selectors)相匹配。
译注:该方法可同时查询前导兄弟节点和后继兄弟节点。
样例
<ul id="cities">
<li class="us" id="nyc">New York</li>
<li class="uk" id="lon">London</li>
<li class="us" id="chi">Chicago</li>
<li class="jp" id="tok">Tokyo...
addMethods([methods])
addMethods(tagName, methods)第一个参数的类型是一个 hash 列表,用于对 Element 对象进行扩展,hash 列表的名值对将转换为 扩展后 的元素的方法或属性。
第二种用法是扩展一个指定的 HTML 元素,tagName 指定 HTML 元素标签。
Element.addMethods 使你能够混入自己的方法到 Element 对象。混入后,可以在 $() 工具函数返回的 已扩展 的元素上使用你的方法,或者直接作为 Element 的方法,如下面的例子:
$(element).myOwnMethod([args...]); 注意,也可以写成下面的方式:
Element.myOwnMethod(element|id[, args...]); 为增加新的方法,只需简单的为 Element.addMethods 提供一个...
addClassName(element, className) -> HTMLElement
增加一个 CSS 类到 element 中。
样例
<div id="mutsu" class="apple fruit"></div>
$('mutsu').addClassName('food')
$('mutsu').className
// -> 'apple fruit food'
$('mutsu').classNames()
// -> ['apple', 'fruit', 'food']
...
absolutize(element) -> HTMLElement转换元素的定位方式为绝对定位,并且不改变元素在页面中的位置。
译注:该方法使用代码 element.style.position = 'absolute' 改变定位方式。在改变定位方式后, 元素左上角的坐标仍会保持原来的位置,如果元素未设置初始的 width 和 height 属性,则调用该方法后, 元素的宽度和高度会改变为系统预设值。
Element 对象引入了许多功能强大的方法,你既可以通过 Element 来访问这些方法 (不过这已经过时了),也可以通过已扩展的 DOM 元素直接访问这些方法(幸亏 Element.extend 为 DOM 元素增加了一层语法糖衣)。
在继续阅读下面的文章之前,你应该先阅读 “Prototype 如何扩展 DOM”一文,这篇文章将会引领你深入理解 Prototype 奇妙的 DOM 扩展内部工作机制。
样例
<div id="message" class=""></div>
// 切换 div#message 的 CSS 类名
$('message').addClassName('read');
// -> div#message
// 你也可以使用没有语法糖衣的版本:
Element.toggleClassName('...
<script src="prototype.js"></script>
<form id="frm">
<div id="div1">
<input type="text" id="txt" name="txt" onchange="return alert('Now')"/>
<input type="text" id="txt2" name="txt2" />
<input type="button" id="btn" name="btn"
value="click" onclick="test(event)" />
<input type="submit" />
<a href="http://www.google.com" onclick="test2(event)">Google</a...
<html>
<head>
<script src="prototype.js"></script>
<script>
function testRemove()
{
Element.remove("mydiv3");
}
function testReplace()
{
Element.replace("myDiv2",'<img src="200607061129268fc45.jpg">');
}
</script>
</head>
<body>
<div id="myDiv"> 2002 </div>
<div id="myDiv1"> 2003 </div>
<div id="myDiv2"> 2004 </div>
<div id="myDiv3"> 将被删除的部分 </div>
<div id="myDiv4&q...