学习jQuery的第六篇日记
2011-01-12 阅读 95
这是第六篇日记了,在这里把选择符剩下的知识点补充一下,让后给选择符这个环节做个总结。
#### DOM遍历方法:
利用jquery选择符取的一组元素,就想我们在DOM树中纵横遍历在经过筛选选得到的结果一样。如果只有这一种选择的方式,那我们的选择余地还是有限的(不过jquery选择符本身的功能相对来说还是很强大的)在很多情况下取得某个元素的父元素或者祖先元素,这些操作都是基本的操作,而这正是jquery的DOM遍历方法的强大之处。有了这些方法我们就可以在DOM树任意行走了。
jquery中某些方法与选择符表达式有异曲同工之妙。例如:这行用于添加odd类的代码:
$('tr:odd').addClass('alt');
```
上面的代码还可以使用.filter()方法来实现。代码:
$('tr').filter(':odd').addClass('alt');
```
上面的这两种取得元素的方式在很大程度上可以相互补充,同样.filter()的功能也十分强大,因为他可以接受函数参数。通过传人函数,可以执行复杂的测试,以决定相应元素是否应该保留在匹配的集合中。例如:假如我们要为所有外部链接添加一个类。jquery中却没有针对这种需求的选择符。如果没有筛选函数,就必须显示地遍历每个元素,并对他们进行单独测试。但是有了下面的筛选函数,就仍然可以利用jquery的隐式迭代能力来保持代码的简洁。代码:
$('a').filter(function(){
return this.hostname && this.hostname != location.hostname;
}).addClass('external');
```
下面我们对上面的代码做一个解释:
第二行代码可以筛选出符合下面两个条件的元素:
(1)必须包含一个带有域名(this.hostname)的href属性。这个测试可以排除mailto及类似链接。
(2)链接指向的域名(还是this.hostname)必须不等于(!=)页面当前所在域的名称(location.hostname)。
更准确的说,.filter()方法会迭代所有匹配的元素,基于每个元素测试函数的返回值。如果函数返回false,则从匹配集合中删除相应元素;如果返回ture则保留相应元素。
通过下面的例子演示一些 遍历方法的其他用途。
例子要求:为特定单元格添加样式。
HTML代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>为特定单元格添加样式</title>
<body>
<table>
<tr>
<td>As You Like It</td>
<td>Comedy</td>
<td></td>
</tr>
<tr>
<td>As You Like It</td>
<td>Comedy</td>
<td>1061</td>
</tr>
<tr>
<td>As You Like It</td>
<td>Comedy</td>
<td>1061</td>
</tr>
<tr>
<td>Henry V, Part I</td>
<td>Comedy</td>
<td>1061</td>
</tr>
<tr>
<td>Henry V</td>
<td>Comedy</td>
<td>1061</td>
</tr>
</table>
</body>
</html>
```
jquery代码:
$(document).ready(function(){
$('td:contains(Henry)').next().addClass('css样式');
});
```
.next()方法只选择下一个接近的同辈元素。要突出显示Henry所在单元格后面的全部单元格,可以使用.nextAll()方法。代码:
$(document).ready(function(){
$('td:contains(Henry)').nextAll().addClass('css样式');
});
```
访问DOM元素
所有选择符表达式和多数jquery方法返回一个jquery对象,而这通常都是我们所希望的因为jquery对象能够提供隐式迭代和连缀能力。
尽管如此,我们仍然有需要在代码中直接访问DOM元素的时候。例如可能需要为另一个javascript库提供一组元素的结果的集合,或者,可能不得不访问某个元素元素的标签名——通过DOM元素的属性。jquery提供了.get()方法。要访问jquery对象引用的第1个DOM元素,可以使用.get(0).如果需要在循环中使用DOM元素那么就应该使用.get(index)。如果想知道带有id=”my-element“属性的元素的标签名,使用如下代码:
var myTag = $('my-element').get(0).tagName;
```
上面的代码可以简写为:
var myTag = $('my-element').[0]).tagName;
```
本人不推荐后者。
因为连缀很容易理解在这就不在介绍了。
小结:通过这6篇日记,相信大家应该掌握了如何使用css选择符为嵌套列表中的顶级和非顶级分别添加样式,如何使用使用选择符为不同类型的链接应用不同的样式,如何使用自定义的jquery选择符 :odd和:even,或高级css选择符 :nth-child()为表格添加条纹效果,以及如何使用jquery方法突出显示某个表格单元中的文本。
在下面的日记中我会和大家分享jquery中的事件。
jQuery document ready onload click
更新于 2023年03月28日