`
man4j
  • 浏览: 5272 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

(二) mootools的DOM操作

阅读更多

上一篇概述了Mootools的core部分的各个模块,代码例子中包含了如何注册domready的事件处理函数以及使用Class类型实现OO的简单例子,这一篇将详细介绍Mootools在dom元素选择器方面的支持以及dom的常用操作。

mootools的DOM操作

目录:

mootools选择器&DOM操作

Element类型与HTML dom元素的关系

获得dom节点对象的三种主要方法

通过id获得dom节点对象 : document.getElementById方法 与 美元符号 $

通过某个节点对象获得其子节点对象

通过选择器在页面中查找获得节点对象 与 双美元符号$$

主要的dom操作api

 ()注入 inject

       将hello注入为content的首位子节点

hello注入为content的末尾子节点

hello注入到content的前面

hello注入到content的后面

不指定位置

(二)霸占 grab

霸占作为自己的首位子节点

其他例子:

(三) 吸收 adopt

(四)替换 replaces

(五)包裹 wraps

(六) 其他

总结

Element类型与HTML dom元素的关系

一个Element类型的对象对应一个HTML dom节点对象,通过mootools的api获得的dom节点对象与原生的dom节点对象在使用上毫无差别,不过mootools给这个原生的dom节点对象附加了一些功能,使得它能够方便的调用dom操作或其他api。

 

获得dom节点对象的三种主要方法

通过id获得dom节点对象 : document.getElementById方法 与 美元符号 $

javascript支持使用document.getElementById(idAttr)来获得一个dom节点对象,其中参数idAttr是节点的id属性值,mootools提供一个方法同样可以通过id获得dom节点对象,这个方法是document.id(idAttr), 参数idAttr同样是节点的id属性值,这个方法的内部还是通过原生的document.getElementById获得一个dom节点,然后包装成Element类型返回。

 

document.id方法在mootools里有一个别名 $

如果你想获的这个标签对应的dom节点对象

<div id="main"></div>

 则你可以通过调用

 

document.id('main')
//或者
$('main')

 

两种方式的效果完全一样。 另外,出于兼容性的考虑,在页面加载mootools.js时,如果你的js环境中已经定义了全局的$变量,那么mootools将不会覆盖$变量, 此时$就不具有document.id的功能。

 

通过某个节点对象获得其子节点对象

<div id="contain">
    <a href="#">第一个a标签</a>
    <a href="#">第二个a标签</a>
    <span class="msg">class属性为'msg'的span标签</span>
    <div id="content">id属性为'content'的div标签</div>
</div>
//获得容器节点对象
var containEl = $('contain');

//某个节点对象调用getElement,则按照指定选择器返回子节点中第一个满足选择器的节点对象,如果找不到则返回undefined
//某个节点对象调用getElements,则按照指定选择器返回子节点中所有满足选择器的节点对象,返回一个(类似)数组,若找不到则返回空数组

//通过标签名, 获得容器节点对象下的第一个a标签节点
var firstAnchorEl = containEl.getElement('a');
//通过class属性,获得容器节点对象下的第一个class属性为'msg'的节点
var firstElByClassMsg = containEl.getElement('.msg');
//通过id属性,获得容器节点对象下的第一个id属性为'content'的节点
var firstElByIdContent = containEl.getElment('#content');

//通过标签名, 获得容器节点对象下的所有a标签节点
var anchorEls = containEl.getElements('a');

 

 我们可以对某个节点对象调用getElment(selector),并指定一个选择器 (css主流选择器),然后返回该该节点的子节点中第一个满足选择器的节点对象,如果没有合适的子节点则返回undefined;如果想获得多个子节点则使用 getElements(selector)方法返回一个数组,如果没有合适的子节点,则返回空数组。

 

通过选择器在页面中查找获得节点对象 与 双美元符号$$

mootools支持在页面中通过选择器查找并获得满足选择器的节点对象的集合,使用上面的html代码(选择器部分可以参考w3c的css选择器教程《css选择器》)

 

<div id="contain">
    <a href="#">第一个a标签</a>
    <a href="#">第二个a标签</a>
    <span class="msg">class属性为'msg'的span标签</span>
    <div id="content">id属性为'content'的div标签</div>
</div>

 

//获得页面中id属性为'contain'节点下的第一个a标签节点组成的集合
var aEls = $$('#contain > a');
var length = aEls.length;//返回 1

//获得页面中id属性为'contain'节点下的所有a标签节点组成的集合
aEls = $$('#contain a');
length = aEls.length;//返回 2

//获得页面中id属性为'contain'节点下的class属性为'msg'的节点组成的集合
var msgEls = $$('#contain .msg');
length = msgEl.length;//返回 1

//获得页面中id属性为'content'的div标签节点组成的集合
var divEls = containEl.getElment('#content');
length = msgEl.length;//返回 1

//获取页面中class属性为'nothing'的节点组成的集合
var nothingEls = containEl.getElment('.nothing');
length = nothingEls.length;//返回 0

 

主要的dom操作api

 

(一)注入 inject

某个元素节点调用inject方法,可以将该节点注入到某个指定节点的 前面/后面/首个子节点/末尾子节点,例子如下:

最初的htlm页面:

 

<div id="hello">Hello World</div>

<div id="main">
    <div id="title">Language</div>
    <div id="content">
        <div id="subtitle">Javascript</div>
    </div>
</div>

 分别获取id为'hello'和'content'的节点

 

//注释中hello表示id为'hello'的节点,content表示id为'content'的节点,...
//获取hello节点,content节点
var hello = $('hello'),
      content = $('content');

 1.将hello注入为content的首位子节点

//将hello注入为content的首位子节点
hello.inject(content, 'top');

效果:

<div id="main">
    <div id="title">Language</div>
    <div id="content">
        <div id="hello">Hello World</div>
        <div id="subtitle">Javascript</div>
    </div>
</div>

 

2.将hello注入为content的末尾子节点

//将hello注入为content的末尾子节点
hello.inject(content, 'bottom');

效果:

<div id="main">
    <div id="title">Language</div>
    <div id="content">
        <div id="subtitle">Javascript</div>
        <div id="hello">Hello World</div>
    </div>
</div>

 

3.将hello注入到content的前面

//将hello注入到content的前面
hello.inject(content, 'before');

 效果:

<div id="main">
    <div id="title">Language</div>
    <div id="hello">Hello World</div>
    <div id="content">
        <div id="subtitle">Javascript</div>
    </div>
</div>

 

4.将hello注入到content的后面

//将hello注入到content的后面
hello.inject(content, 'after');

 效果:

<div id="main">
    <div id="title">Language</div>
    <div id="content">
        <div id="subtitle">Javascript</div>
    </div>
    <div id="hello">Hello World</div>
</div>

  5.不指定位置

//不指定位置,默认为'bottom'
hello.inject(content/*,'bottom'*/);

 效果:

<div id="main">
    <div id="title">Language</div>
    <div id="content">
        <div id="subtitle">Javascript</div>
        <div id="hello">Hello World</div>
    </div>
</div>

 

(二)霸占 grab

grab方法是跟inject相对的, a.inject(b, 'top') 相当于 b.grab(a, 'top');只举一个例子,基于inject例子的html代码

霸占作为自己的首位子节点

 

//content霸占hello,作自己的首位子节点
content.grab(hello, 'top');

 

 效果:

<div id="main">
    <div id="title">Language</div>
    <div id="content">
    <div id="hello">Hello World</div>
        <div id="subtitle">Javascript</div>
    </div>
</div>

 其他例子:

//content霸占hello,作自己的首位子节点
content.grab(hello, 'top');
//content霸占hello,作自己的末尾子节点
content.grab(hello, 'bottom');
//content霸占hello,放到自己前面
content.grab(hello, 'before');
//content霸占hello,放到自己后面
content.grab(hello, 'after');
//不指定位置,默认为'bottom'
content.grab(hello/*,'bottom'*/);

 

(三) 吸收 adopt

父容器可以吸收多个元素作为自己的子节点,子节点的顺序按照参数的顺序

原始页面:

 

<div id="first">first</div>
<div id="second">second</div>
<div id="third">third</div>

<div id="wrap"></div>
//注释中first表示id为'first'的节点,...
//获取wrap节点,first节点,first节点,second,third
var wrap = $('wrap'),
    first = $('first'),
    second = $('second'),
    third = $('third');

//让wrap依次吸收first,second,third
wrap.adopt(first, second, third);

效果:

 

<div id="wrap">
    <div id="first">first</div>
    <div id="second">second</div>
    <div id="third">third</div>
</div>

 

另外,adopt的参数可以是多个节点对象,也可以是数组,最终调用会把参数中元素或者数组打平,总是把用户传入的所有参数中的节点对象接受,例如下面多种参数,效果一样:

 

//让wrap依次吸收first,second,third
wrap.adopt([first, second, third]);
wrap.adopt(first, [second, third]);
wrap.adopt(first, [[second], third ]);
wrap.adopt([first, second], third);


(四)替换 replaces

//用某个节点替换另一个节点,这之后old将离去,new占据old原来的文档位置
$('new').replaces($('old'));

 

(五)包裹 wraps

该方法跟grab类似,但是调用者节点会替换参数节点的位置,效果相当于grap和replaces的组合

 

//$('a')节点替换$('b')节点,并且把$('b')节点霸占为自己的首位子节点
$('a').wraps($('b'), 'top')

//效果等同于下面代码
var b = $('b');
var a = $('a');
a.replaces(b).grab(b, 'top');

 

(六)其他

其他元素节点的操作,例如增加本文、修改class属性、拷贝节点等等,请参考官方文档的Element部分


总结

本文首先介绍了Element类型与浏览器dom节点对象的关系,然后介绍三种最主要的获取dom元素节点对象的方法,最后着重介绍五个常用的dom操作api

 

分享到:
评论

相关推荐

    mootools详细教程chm

    MooTools 是一个轻量级且功能强大的JavaScript库,它提供了一种优雅的方式来处理DOM操作、事件、动画效果以及Ajax交互。这个“mootools详细教程chm”包含了丰富的资源,旨在帮助开发者深入理解和熟练运用MooTools。 ...

    通过Mootools 1.2来操纵HTML DOM元素

    MooTools是一个轻量级的JavaScript框架,提供了丰富的API来简化DOM操作。以下是一些核心的方法及其应用: 1. **.get()**: `.get()` 方法用于获取HTML元素的属性。例如,你可以获取元素的`tag`属性来了解它的HTML...

    mootools

    2. **DOM操作**:MooTools提供了丰富的DOM(文档对象模型)操作接口,如选择元素、添加或删除样式、创建和插入节点等,简化了对HTML元素的操作。 3. **事件处理**:MooTools的事件系统允许绑定和解绑事件,同时支持...

    mootools tree and table

    它提供了丰富的API,包括DOM操作、事件处理、动画效果以及各种UI组件。MooTools的类系统允许开发者通过继承和组合创建自定义功能,这使得代码更加组织有序且易于维护。 在"mootools tree"方面,MooTools提供了一种...

    mootools源码分析.rar

    总的来说,通过对MooTools源码的分析,我们可以学习到JavaScript的高级特性、面向对象编程、事件处理、DOM操作、动画制作以及跨浏览器兼容性等多方面的知识,这对提升我们的JavaScript开发技能大有裨益。

    MooTools1.4中文PDF手册+MooTools-Core-1.5.1.js

    - **文档覆盖**:手册详细介绍了MooTools的各个组件、方法和用法,包括基础API、核心组件、DOM操作、事件处理、Ajax请求等。 - **示例代码**:手册中的例子可以帮助开发者理解如何在实际项目中应用MooTools,每个...

    mootools框架入门教程

    mootools框架是一个功能强大且灵活的JavaScript框架,它提供了许多实用的方法来简化DOM操作和ajax开发。下面将对mootools框架的Element篇进行详细的介绍。 Element篇 Element篇是mootools框架中最基础的部分,它...

    Mootools 1.2.1 API 文档

    2. **DOM模块**:Mootools的DOM模块提供了一套强大的选择器引擎和DOM操作接口。`Element`和`Elements`类使得与DOM交互变得简单,如`$('elementId')`可以获取指定ID的元素,`$(element).addClass('class')`可以添加...

    mootools-release-1.11

    2. **DOM操作**:MooTools提供了强大的DOM操作接口,如`$(selector)`用于获取元素,`$$()`用于获取多个元素集合,以及`Element`对象上的各种便利方法,如`appendChild`, `insertBefore`等,简化了DOM操作。...

    mootools教程

    MooTools是一个强大的JavaScript库,它提供了一系列工具和方法,帮助开发者更加高效地进行Web页面的开发和DOM操作。在MooTools中,Element是最基本的类,它封装了大量DOM操作,使得JavaScript代码更加简洁易用。这篇...

    mootools 1.2 中文文档

    MooTools 1.2是该库的一个稳定版本,它提供了丰富的功能集,包括DOM操作、事件处理、动画效果、Ajax交互等。这份中文文档的出现,为国内开发者学习和使用MooTools提供了极大的便利。 1. **核心概念**: - **类与...

    mootools详细教程

    在本文档中,我们将重点介绍MooTools中的核心组件——Element模块,以及如何利用它来进行DOM操作。 1. **Element方法完全解析** - `Element`类是MooTools的核心之一,它允许开发者以更加面向对象的方式处理DOM元素...

    MooTools.Essentials

    3. **DOM操作**:MooTools提供了便利的DOM操作API,如$$(选择元素集合)、Element(单个元素操作)、Elements(元素集合操作)等,使得DOM操作更加简洁高效。 4. **事件处理**:MooTools的事件处理机制允许开发者...

    mootools开发手册中文版

    1.1.js是MooTools的一个版本,可能包含了基本的DOM操作、事件处理、动画效果、AJAX通信等功能。 1. **对象与类**:MooTools 使用原型继承来实现面向对象编程,提供了强大的类系统。开发者可以通过`extend`方法来...

    mootools_1.2的中文文档

    2. **DOM 操作**:MooTools 提供了一系列便捷的DOM操作方法,如$(选择元素)、$$(选择多个元素)、Element(创建和操作元素)等,使DOM操作更为简洁。 3. **事件处理**:MooTools 引入了事件委托和自定义事件机制...

    Mootools1.2.3各版本下载

    MooTools是一个轻量级的JavaScript库,设计用于简化Web开发中的DOM操作、事件处理、动画效果以及Ajax交互。1.2.3是MooTools的一个稳定版本,它提供了丰富的功能集,同时保持了高性能和良好的浏览器兼容性。在本文中...

    MooTools 1.2 中文手册

    MooTools 1.2 是这个库的一个重要版本,提供了许多改进和优化,使得开发者能够更方便地处理DOM操作、事件处理、动画效果以及Ajax交互。 1. **核心(Core)** - **文档对象模型(DOM)操作**: MooTools的核心包含了对...

    mootools 1.3 core 核心js库

    MooTools是一个强大的JavaScript框架,它的1.3版本是其发展中的一个重要里程碑。这个核心库提供了许多基础功能,使得...无论是在创建动态网站、开发富互联网应用还是进行复杂DOM操作,MooTools都是一个值得信赖的选择。

    Mootools v1.11 文档 pdf html Mootools v1.2.1 js

    3. **DOM操作**:MooTools提供了丰富的DOM操作接口,如选择元素、遍历DOM树、创建和删除元素等,使得对网页结构的操控变得简单。 4. **事件处理**:MooTools支持事件监听和触发,提供了一种优雅的方式来处理用户...

Global site tag (gtag.js) - Google Analytics