focusFirstElement
focusFirstElement(formElement) -> HTMLFormElement
指定表单第一个未隐藏、未禁用的控件获取键盘焦点。
该方法使用 Form.findFirstElement() 来获取第一个元素,然后在元素上调用 activate() 方法。该方法常用于 Web 站点增强用户体验,当包含表单 (如用于搜索的表单或填写联系信息的表单)的页面载入后,设置表单中可见的第一个未禁用的控件获取焦点, 这样用户马上就可以键入文字了。
findFirstElement
findFirstElement(formElement) -> HTMLElement
在表单中查找第一个未隐藏、未禁用的控件。
返回的对象是以下三种类型的元素之一:INPUT、SELECT 或 TEXTAREA。该方法被用在 focusFirstElement() 方法中。
注意
该方法的返回值是按照 document 顺序查找到的第一个元素,而不是按照 Tab 键的顺序。
findElement
Event.findElement(event, tagName) -> Element
从触发事件的 DOM 元素开始(包含该元素),由里而外搜索第一个具有指定标签名称的 DOM 元素。
有时你并不关心触发事件的元素,而是想知道距离事件发生点最近的(可能是触发事件的元素,也可能是该元素的容器节点, 或容器节点的容器,依此类推)具有指定标签的元素(例如 <p>)。而这就是 findElement 所能够做到的。
标签名称(tagName)的比较不区分大小写。
如果没有找到匹配的元素,则返回文档本身(HTMLDocument 节点)。
样例
这里有一个简单的例子,当点击页面时,如果点击的元素或元素的容器是一个段落,则隐藏该段落。
Event.obs...
element
Event.element(event) -> Element
返回触发事件的 DOM 元素。
注意:从 v1.5.1 开始,Event.element 返回的元素已经被扩展。
样例
这里有一些简单的代码,当你在页面上进行点击时,如果点击的是段落,则将段落隐藏。
Event.observe(document.body, 'click', function(event) {
var element = Event.element(event);
if ('P' == element.tagName)
element.hide();
});
参见
findElement,它和 element 间存在着一些微妙的区别。
使用 Prototype 1.5.0 时的注意事项
注意:在 1.5.1 版之前,如果浏览器不支持 原生的 DOM 扩展(点击 这里 获取更详细的信息),Event.elemnet 返回的元素可能...
hasAttribute [simulated]
hasAttribute(element, attribute) -> Boolean
为不存在该方法的浏览器(Internet Explorer 6 或 7)模拟规范中指定的 DOM 方法 hasAttribute。
样例
<a id="link" href="http://prototypejs.org">Prototype</a>
$('link').hasAttribute('href');
// -> true
...
writeAttribute [1.6]
writeAttribute(element, attribute[, value = true]) -> HTMLElement
writeAttribute(element, attributes) -> HTMLElement
新增、修改或移除指定的 element 属性。属性参数可以是一个 hash 对象,也可以是一个名/值对。
visible
visible(element) -> Boolean
返回 Boolean 值,指示 element 是否可见(即判断元素内联的 style 属性是否设置为 "display:none;")。
样例
<div id="visible"></div>
<div id="hidden" style="display:none;"></div>
$('visible').visible();
// -> true
$('hidden').visible();
// -> false
注意
该方法忽略 CSS 样式表对元素的影响,这不是 Prototype 的限制,而是 CSS 规则的限制。
译注:通过在 <style> 标签或外部样式表中定义 CSS 属性来隐藏元素,visible 方法将无法做出准确的判断(即该方法只关注内联的或...
viewportOffset [1.6]
viewportOffset(element) -> [Number, Number] 或 { left: Number, top: Number }
返回 element 相对于浏览器可视区域左上角的坐标值。(译注:坐标原点以浏览器当前可见的部分为基准, 意即当滚动条滚动后,坐标原点也随之改变,坐标原点在当前窗口中永远可见。)
译注:假定返回值为 offset,则 X 轴坐标可通过 offset[0] 获取,也可以通过 offset.left 获取,Y 轴坐标可通过 offset[1] 获取,也可通过 offset.top 获取。
注意:所有返回值都仅有数字,单位为像素。
...
update
update(element[, newContent]) -> HTMLElement
替换 element 的内容为参数 newContent 指定的内容,返回元素本身。
译注:该方法类似于 element.innerHTML = newContent。
newContent 可以是纯文本、HTML 片断或任意具有 toString() 方法的 JavaScript 对象。
如果 newContent 中包含 <script> 标签,更新后将会自动运行标签中所包含的 Javascript 代码(Element.update 方法内部调用了 String#evalScripts 方法)。
如果未提供参数,Element.update 将简单的清除 element 的内容。
注意:在 IE6 及以上版本中,该方法允许对与元素相关的表的内容进行无缝更新。
样例
<div id=&q...
up
up(element, [cssRule][, index = 0]) -> HTMLElement | undefined
返回 element 的与 cssRule 相匹配的第一个先代节点(如果指定 index 参数,则返回第 index 个)。如果未指定 cssRule,则默认匹配所有先代节点。如果没有符合条件的先代节点,返回 undefined。
Element.up 方法是 Prototype 最基本的 DOM 遍历工具之一(其余的还有 Element.down、 Element.next 和 Element.previous,这些方法体现了 Prototype 良好的编程风格)。它允许基于索引和/或 CSS 规则对元素的先代节点进行精确选择。
因为它忽略了文本节点(仅返回元素),所以你不必担心空白节点。
还有一个额外的惊喜,所有返回的元素都已经过...
undoPositioned
undoPositioned(element) -> HTMLElement
设置 element 返回到在元素上应用 Element.makePositioned 方法之前的状态,返回元素本身。
对于 element 内具有绝对定位属性的子元素,调用该方法后,它们定位的基准位置将会更改为 element 最近的 CSS position 属性为 'absolute'、'relative' 或 'fixed' 的那个先代节点。
样例
<p>lorem […]</p>
<div id="container">
<div id="element" style="position: absolute; top: 20px; left: 20px;"></div>
</div>
$('container').makePositioned();
// -> HTMLElem...
undoClipping
undoClipping(element) -> HTMLElement
设置 element 的 CSS overflow 属性,重置其值为应用 Element.makeClipping() 之前的值,返回元素本身。
样例
<div id="framer">
<img src="/assets/2007/1/14/chairs.jpg" alt="example" />
</div>
$('framer').undoClipping();
// -> HTMLElement(并恢复 CSS overflow 属性为初始值)
点我测试一下
var Example = {};
Example.clip = function(){
$('clipper').update('撤销!');
$('framer').makeClipping().setStyle({width: '100px', height: '100px...
toggleClassName
toggleClassName(element, className) -> HTMLElement
切换 element 的 CSS className(在有和无该类名称间切换),并返回元素本身。
样例
<div id="mutsu" class="apple"></div>
$('mutsu').hasClassName('fruit');
// -> false
$('mutsu').toggleClassName('fruit');
// -> element
$('mutsu').hasClassName('fruit');
// -> true
...
toggle
toggle(element) -> HTMLElement
切换 element 的可视性(在隐藏和显示间进行切换)。
样例
<div id="welcome-message"></div>
<div id="error-message" style="display:none;"></div>
$('welcome-message').toggle();
// -> HTMLElement(并隐藏 div#welcome-message)
$('error-message').toggle();
// -> HTMLElement(并显示 div#error-message)
注意
Element.toggle 不能 显示通过 CSS 样式表隐藏的元素。这不是 Prototype 的限制,而是与 CSS display 属性的解析过程有关。
译注:通过在 <style> 标签或外部样...
stopObserving
stopObserving(element, eventName, handler) -> HTMLElement
为 element 注销指定的事件处理程序。
这是对 Event.stopObserving 的简单代理,更深入的信息请参考 Event.stopObserving。
样例
$(element).stopObserving('click', coolAction);
// -> HTMLElement(并注销 'coolAction' 事件处理程序)。
siblings
siblings(element) -> [HTMLElement...]
获取 element 的所有兄弟节点,并返回一个数组,数组元素已经过 扩展。
如果两个元素有相同的父节点,则认为它们是兄弟节点,因此在样例中,head 和 body 是兄弟节点(它们的父节点都是 html)。
返回的数组成员按照元素在页面中的顺序进行排列(例如:索引 0 表示 element 的第一个兄弟节点)。
注意:所有 Prototype 的 DOM 扩展方法均忽略文本节点,仅返回元素节点。
Examples
<ul>
<li id="golden-delicious">Golden Delicious</li>
<li id="mutsu">Mutsu</li>
<li id="mcintosh">...