Mootools 1.2教程(2) DOM选择器

如果你还没有准备好,请先阅读上一篇《Mootools 1.2教程(1)——MooTools介绍》。我们讲了怎么引用MooTools 1.2以及怎么在domready里面调用你的脚本。
今天开始本系列教程的第2讲。在这一讲中,我们会学习几种选择HTML元素的方法。在许多方面,这是MooTools用得最多最基本的。毕竟,要创建一个基于HTML元素的交互性用户体验,你必须首先把它们掌握在手中。
基本的方法
$();
$函数是MooTools中基本的选择器。你可以通过它来根据一个ID选择DOM元素。
参考代码:


代码如下:

// 选择ID为”body_wrap“的元素
$('body_wrap');

参考代码:


代码如下:

<div id="body_wrap">
</div>

.getElement();
.getElement();扩展了$方法,可以让你简化你的选择操作。例如,你可以通过$方法来选择ID为”body_wrap“的元素,然后选择第一个子节点。.getElement();只选择一个元素,如果有多个符合要求的元素则返回第一个元素。如果你给.getElement();方法一个CSS类名作为参数,你就会得到第一个有这个CSS类名的元素,而不是函数所有元素的数组。要选择多个元素,则可以使用下面的.getElements();方法。
参考代码:


代码如下:

// 选择ID为”body_wrap“的元素下面的第一个链接
$('body_wrap').getElement('a');
// 选择ID为”body_wrap“的元素下面的ID为”special_anchor“的元素
$('body_wrap').getElement('#special_anchor');
// 选择ID为”body_wrap“的元素下面第一个CSS类名为”special_anchor_class“的元素
$('body_wrap').getElement('.special_anchor_class');

参考代码:


代码如下:

<div id="body_wrap">
<a href="#">anchor</a>
<a href="#">another anchor</a>
<a id="special_anchor" href="#">special anchor</a>
<a class="special_anchor_class" href="#">special anchor</a>
<a class="special_anchor_class" href="#">another special anchor</a>
</div>

$$();
$$函数可以可以让你快速选择多个元素,并组成一个数组(一种你可以操作、获取和以任何方式重新排序的列表)。你可以通过标签名(如div、a、img等)、或者ID或者是他们的各种组合来选择多个元素。就像一个读者指出的那样,你可以用$$做很多事情,远远超出我们这里所介绍的。
参考代码:


代码如下:

// 选择这个页面中的所有div
$$('div');
// 选择ID为”id_name的元素和所有的div
$$('#id_name', 'div');

参考代码:


代码如下:

<div>
<div>a div</div>
<span id="id_name">a span</span>
</div>

.getElements();
.getElements();和.getElement();非常类似,不过它返回所有符合要求的元素,并组成一个数组。你可以想使用.getElement();方法那样使用.getElements();。
参考代码:


代码如下:

// 选择ID为”body_wrap“的元素下面的所有链接
$('body_wrap').getElements('a');
// 选择ID为”body_wrap“的元素下面的所有CSS类名为”special_anchor_class“的子元素
$('body_wrap').getElements('.special_anchor_class');

参考代码:


代码如下:

<div id="body_wrap">
<a href="#">anchor</a>
<a href="#">another anchor</a>
<a class="special_anchor_class" href="#">special anchor</a>
<a class="special_anchor_class" href="#">another special anchor</a>
</div>

用运算符包含和排除结果
运算符
MooTools 1.2支持几种运算符,可以让你进一步精简你的选择操作。你可以在.getElements();中使用这些运算符来包含或者排除特定的结果。MooTools支持4种运算符,每一种都可以用来通过名字(name)选择一个input元素。
= : 等于
参考代码:
//选择name为”phone_number“的input元素
$('body_wrap').getElements('input[name=phone_number]');
^= : 以……开始
参考代码:
// 选择name以”phone“开头的input元素
$('body_wrap').getElements('input[name^=phone]');
$= : 以……结束
参考代码:
// 选择name以数字(number)结束的input元素
$('body_wrap').getElements('input[name$=number]');
!= : 不等于
参考代码:
// 选择名字不等于”address“的input元素
$('body_wrap').getElements('input[name!=address]');
参考代码:
<div id="body_wrap">
<input name="address" type="text" />
<input name="phone_number" type="text" /> <!-- 上面的所有示例代码都将选中这个元素 -->
</div>
(Fdream注:input在这里只是作为一个例子,你同样可以使用这种方式选择其他元素,比如div、a等等。)
要使用运算符,你必须首先指定元素的类型(比如这里的input),然后指定你要过滤的属性(比如这里的name),再加上你的 运算符,最后选择你的过滤字符串。
基于元素顺序的选择器
even(偶数选择)
通过这个简单的选择器,你可以选择序号为偶数的元素。注意:这个选择器从0开始计数,因此第一个元素是偶数序的。
参考代码:
// 选择序号为偶数的div
$$('div:even');
参考代码:
<div>Even</div><!-- 上面的代码将选中这个元素 -->
<div>Odd</div>
<div>Even</div><!-- 上面的代码将选中这个元素 -->
<div>Odd</div>
odd(奇数选择)
和even一样,只不过它选择序号为奇数的元素。
参考代码:
// 选择所有序号为奇数的div
$$('div:odd');
参考代码:
<div>Even</div>
<div>Odd</div><!-- 上面的代码将选中这个元素 -->
<div>Even</div>
<div>Odd</div><!-- 上面的代码将选中这个元素 -->
.getParent();
通过.getParent();方法,你可以得到一个元素的父元素(parent)。
参考代码:
// 选择ID为”child_id“的元素的父元素
$('child_id').getParent();
参考代码:
<div id="parent_id"> <!-- 上面的脚本将返回这个元素-->
<div id="child_id">Even</div>
</div>
代码举例
任何MooTools UI开发都是从选择器开始的。这里是一些非常简单的例子,演示了怎么去使用选择器操作DOM元素。
参考代码:
// 设置所有span的背景颜色为#eee
$$('span').setStyle('background-color', '#eee');
// 设置所有序号为奇数的span的背景色为#eee
$$('span:odd').setStyle('background-color', '#eee');
// 设置ID为body_wrap的元素下的所有CSS类名为.middle_spans的span的背景色为#eee
$('body_wrap').getElements('.middle_spans').setStyle('background-color', '#eee');
参考代码:


代码如下:

<div id="body_wrap">
<span>Even</span>
<span class="middle_spans">Odd</span>
<span class="middle_spans">Even</span>
<span>Odd</span>
</div>

下载zip包并尝试一下
这个zip包中包含了一个简单的html文件、MooTools 1.2核心库、一个外部js文件和上面你所看到的例子。

更多学习……

这并不意味着这是MooTools 1.2的选择器的全部功能列表,这仅仅只是帮助你入门,告诉你MooTools给你提供了什么功能。要学习有关选择器的更多东西,请参考下面的文档:

MooTools Blog上有关$$选择器的文章

这是mootools.net上非常好的一篇有关$$选择器和介绍它的变化多端的blog文章。通过这个选择器你可以做多到你无法相信的事情,这篇文章很值得一读。

Slickspeed选择器

这里有别人针对MooTools做的一个实验,测量不同的库在选择元素时到底有多快。这对于它本身来说很cool,不过这些选择器的例子非常有价值。这里所有的选择器特性都可以通过$$方法实现。

W3C选择器

MooTools也可以让你利用伪选择器的力量(就像上面的Slickspeed所证明的)。这里是W3C的一篇关于选择器的文章,一定值得读一遍(如果只有选择器的列表对你有用的话)。我不确定MooTools的$$选择器是不是支持这个页面上的每一个单独选择器,但是至少是绝大部分。欢迎大家告诉我有关这方面的更多消息。

(0)

相关推荐

  • Mootools 1.2教程(2) DOM选择器

    如果你还没有准备好,请先阅读上一篇<Mootools 1.2教程(1)--MooTools介绍>.我们讲了怎么引用MooTools 1.2以及怎么在domready里面调用你的脚本. 今天开始本系列教程的第2讲.在这一讲中,我们会学习几种选择HTML元素的方法.在许多方面,这是MooTools用得最多最基本的.毕竟,要创建一个基于HTML元素的交互性用户体验,你必须首先把它们掌握在手中. 基本的方法 $(); $函数是MooTools中基本的选择器.你可以通过它来根据一个ID选择DOM元素.

  • Mootools 1.2教程 事件处理

    今天我们开始第五讲,在上一讲(<Mootools 1.2教程(4)--函数>)中,我们学习了在MooTools 1.2中建立和使用函数的几种不同方式.下一步就是理解事件了.和选择器类似,事件也是建立互动界面的一个重要部分.一旦你掌握了一个元素,你需要去决定什么行为来触发什么效果.先把效果留着以后在讲,我们首先看一看中间步骤和一些常见的事件. 左键单击事件 左键单击事件是web开发中最常见的事件.超链接识别点击事件,然后把你带到另外一个URL地址.MooTools能够识别其他DOM元素上的点击事

  • Mootools 1.2教程 函数

    今天开始MooTools系列教程的第4讲.如果你还没有看过上一讲,请先查看上一篇教程<Mootools 1.2教程(3)--数组使用简介>.今天我们先不讲MooTools,而是讲一讲JavaScript中的函数(function)的基本知识. 但是,为了符合MooTools这个主题,你需要知道在哪里该使用MooTools的函数.此前,我们已经在我们的所有示例代码中,把代码都放在domready方法中.当我们需要把它放在domready的外面时,我们使用了函数(function).在你在domr

  • JavaScript实现自己的DOM选择器原理及代码

    解释器模式(Interpreter):定义一种语法格式,通过程序解释执行它并完成相应的任务.在前端编程场景中可以应用解释器模式来解释CSS选择符实现DOM元素的选择. 开放封闭原则:面向对象中的开放封闭原则是类或模块应该对扩展开放对修改封闭,在这个dom选择器中实现id选择器,元素选择器,类选择器,如果以后需要属性选择器的话定义一个属性选择器实现相应的方法,同时在简单工厂中增加相应的创建属性选择器对象分支即可. 匹配原理:浏览器在匹配CSS选择符时是按照从右到左匹配的,所以实现自己的DOM选择器

  • Mootools 1.2教程(3) 数组使用简介

    今天,我们在来看看如何使用数组来管理DOM元素.基本方法 .each(); 在处理数组时,.each();方法是你最好的朋友.它提供了一种很容易的方法来遍历数组的每个元素,如果有需要还可以对其中的元素进行任何逻辑处理.例如,我们可以假设你需要为页面中的每个div对象调用alert方法: 参考代码: 复制代码 代码如下: $$('div').each(function() { alert('a div'); }); 如果使用下面的HTML代码,上面的JavaScript代码将弹出两个alert对话

  • Mootools 1.2教程 排序类和方法简介

    Sortables类还提供了包括一个名叫"serialize"的优秀方法,通过这个方法你额可以把这些元素的id作为数组输出--对于服务器端的开发非常有用.接下来,我们看看如何创建一个新的排序项集合,还有一定要看一下最后的演示实例. 基本知识 创建一个新的Sortable对象 首先,我们要把我们要排序的元素赋值给变量.对于Sortables来说,如果你想要多个列表之间的元素能够在相互之间拖拽,你需要把这些元素全部都放在一个数组中,就像这样: 参考代码: 复制代码 代码如下: var so

  • Mootools 1.2教程 Fx.Tween的使用

    和我们看到的其他的MooTools函数一样,这些方法使用起来都非常简单,但是功能都很强大.Tween可以让你添加那些极"炫"的效果--可以很平滑地发生形变动画,从而改善你的用户体验. Tween的快捷方法 我们通常都从"基本知识"入手,不过MooTools 1.2只为渐变(tween)提供了这样极其出色的快捷方法,它们使用起来都极其简单以至于我忍不住要从这里开始. .tween(); 一个渐变(tween)是一个在两个样式属性值之间的平滑的变化.举个例子,通过渐变(

  • Mootools 1.2教程 设置和获取样式表属性

    欢迎开始这一系列的教程的第七讲.今天,我们来看一下如何通过MooTools 1.2和我们以前几讲中的内容来操作样式,这将给你在UI上带来很大的控制权.处理样式非常简单,不过今天我们要做一些调整.例如,我们要介绍键值对(key-value pair)对象.我们也会讲到在domready之外来传递变量,就像我们在关于函数的那一讲中学到的一样.从这里开始,我们会开始慢慢提高难度,介绍一些必要的编程概念.如果你是JavaScript新手或者第一次开始学MooTools,请确保你在明白了前面的教程,你可以

  • 原生的强大DOM选择器querySelector介绍

    在传统的 JavaScript 开发中,查找 DOM 往往是开发人员遇到的第一个头疼的问题,原生的 JavaScript 所提供的 DOM 选择方法并不多,仅仅局限于通过 tag, name, id 等方式来查找,这显然是远远不够的,如果想要进行更为精确的选择不得不使用看起来非常繁琐的正则表达式,或者使用某个库.事实上,现在所有的浏览器厂商都提供了 querySelector 和 querySelectorAll 这两个方法的支持,甚至就连微软也派出了 IE 8 作为支持这一特性的代表,quer

  • Mootools 1.2教程 滑动效果(Slide)

    基本用法 就像我们前面看过的所有类一样,我们在把这个类应用到一个元素上面时,我们要做的第一件事就是初始化一个新的Fx.Slide实例. 首先,让我们为滑动元素建立一个HTML文件. 参考代码: 复制代码 代码如下: <div id="slide_element" class="slide">这里是要滑动显示的内容.</div> 我们的CSS也不需要任何修饰. 参考代码: 复制代码 代码如下: .slide { margin: 20px 0;

随机推荐