JavaScript框架比较:选择器(2)
作者:dishuipiaoxiang 来源:Denis'Blog 发布时间:2010-04-20 14:48:00
选择器
大多数JavaScript框架可实现某种形式的快速元素选择。一般来说,这些选择器使获取一个元素的引用更加快捷,并允许你通过ID、class、元素类型或一些伪类选择符来选取元素。
例如,使用通常的JavaScript,你可以使用下面的代码借助ID来取得DOM元素。
var theElement = document.getElementById('the_element');
与其他几个框架一样,MooTools提供了一个执行该操作的快捷方法。除了选择元素,MooTools通过自己一系列的功能函数扩展了元素。
var theElement = $('the_element');
$函数在几个流行的框架(并非全部)中可用,其语法大致相同。Prototype更深一层,通过ID在任何时候可以选择多个元素,返回的是一个元素数组。与
MooTools一样,这些元素利用Prototype的实用函数扩展。利用Prototype库在任何时候选择多个元素的语法是这样的:
var elementArray = $('element_one', 'element_two', 'element_three');
在实用函数这一部分,你将了解到JavaScript框架提供的一些函数迭代我们的集合更加容易。
在前面的例子,你必须提供你欲选择元素的ID。但是,你要选择多个元素该怎么办?所有image、拥有特定className的表格的每一行。MooTools(其它的几个库)提供了一个非常简单的方法来做到这一点--$$函数。除了元素的ID外,他还可以接受以下参数:元素的名字、类名以及伪类选择器,其工作原理与$函数相似。例如,使用MooTools获取页面上所有的图片,你可以使用下面的代码:
var allImages = $$('img');
这将得到文档中所有imag的数组,每一个通过$函数和其实用函数进行扩展。
通过tag标签来选取对象是非常有用的,但如果你只想基于元素的class选取它的部分子集,遮盖怎么办?同样很简单。在下面的例子中,MooTools将选择table中class为“odd”的行,这在对每行进行操作时很有用(交替变换表格每一行的颜色)。
var allOddRows = $$('tr.odd');
事实上,MooTools提供了一个更好的方法执行行操作。在前面的例子中,假定table的奇数行授予了类名“odd”。那么下面的代码不需要在table的每一行上定义任何类名。
var allOddRows = $$('tbody <IMG class=wp-smiley alt=:o src="http://www.denisdeng.com/wp-includes/images/smilies/icon_surprised.gif"> dd');
这是一个伪类选择器的例子,它返回匹配规范的任何对象。在这个例子中,结果为页面中tbody元素中所有奇数行的子元素。MooTools其它伪类元素的例子包括:
checked 所有被选中的元素(例如:选中的复选框);
enabled 所有可用的元素;
contains 所有包含文本(作为参数传递给选择器)的元素。
如前所述,并非所有的JavaScript框架都使用$函数来选取DOM元素。在YUI(Yahoo用户界面)的第三个版本中,下面的代码是通过ID来选取元素的(注意:YUI3需要在ID前加上字符#)。
var theElement = Y.one('#the_element');
同样,通过tag或class来选取元素也不是使用$$函数,在YUI中你要使用Y.all来代替。
var allOddRows = Y.all('tr.odd');
ExtJS以同样的方式工作,通过ID选择元素用下面的语法:
var theElement = Ext.get('the_element') ;
而通过tag和class来获取元素则用下面的语法:
var allOddRows = Ext.select('tr.odd');
在下一章中,你将了解到如何使用JavaScript框架来轻松遍历DOM对象,换句话说,找到与选定元素有父子和兄弟关系的元素。
转载地址:http://www.denisdeng.com/?p=699
原文地址:http://www.ibm.com/developerworks/web/library/wa-jsframeworks/index.html


猜你喜欢
- 学习python都知道,python的第三方库是很多,如果都在本机 pip 的话,在新建项目的时候都会加载不需要用到的库,影响运行速度。而且
- 对于React,Vue构建的单页面应用老说,SEO是一个众所周知的问题。服务端渲染(SSR-server Side Render)是目前看来
- 1.需求:在后台添加一条数据的同时要把添加者记录到表中。2.models.pyclass Setting(models.Model): &
- vue2 和vue3 在 rollup 里面打包会存在几种问题, 包版本的问题,babel 转换jsx等问题将vue2写的组件 打成一个包,
- Django中集成jquery首先,静态的资源通常放入static文件夹中:static/ css/
- Urllib官方文档地址:https://docs.python.org/3/library/urllib.htmlurllib提供了一系列
- 问题你需要将数字格式化后输出,并控制数字的位数、对齐、千位分隔符和其他的细节。解决方案格式化输出单个数字的时候,可以使用内置的 format
- 原理:利用复化梯形公式,复化Simpson公式,计算积分。步骤:import math"""测试函数"
- 写完这个项目后,导师说这个你完全可以当作毕业项目使用了,写的很全,很多的都设计考虑周全,但我的脚步绝不止于现在,我想要的是星辰大海!与君共勉
- 1、概述python * 殊方法(魔术方法)是被python解释器调用的,我们自己不需要调用它们,我们统一使用内置函数来使用。例如:特殊方法_
- 这里提供三种方法:1,使用正则表达式Function regKillHTML(str) &nb
- 1. 简介在windows系统上,重复性的操作可以用Python脚本来完成,其中常用的模块是win32gui、win32con、win32a
- 在 github 的 vue-router 中找到同样的一个问题:3.0.1版本通过router实例无法跳转昨天发现有些路由不能正常跳转,找
- 哪的资料都不如官方资料权威。今天总算从MSDN中择出了ASP编码问题的解决方案。下面是MSDN中的一段话。Setting @CODEPAGE
- 起步要介绍一个非常方便的 Django 扩展包-- django-hosts 。它能够提供在不同的子域名下访问不同的 app。例如,在项目中
- 1.TCP是一种面向连接的可靠地协议,在一方发送数据之前,必须在双方之间建立一个连接,建立的过程需要经过三次握手,通信完成后要拆除连接,需要
- <asp:ImageButton ID="BtnMailaddress" runat="server&q
- 文章摘要本文简单说明了FLV文件的格式,以此为出发点,使用 Python 实现FLV视频的拼接。一.FLV文件格式关于FLV文件格式的解析网
- 下面介绍以threading模块来实现定时器的方法。首先介绍一个最简单实现:import threadingdef say_sth(str)
- 先前在DW教学-Dreamweaver量身打造Wordpress留言板(一) 教学文章中,已经成功的把前端留言机制与界面搞定了,虽然有了留言