当前位置:嗨网首页>书籍在线阅读

06-讨论

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

2.1.3 讨论

区分子元素和后代元素很重要。后代(descendant)是存在于另一个元素中的任何元素,而子元素是直接后代;用父母和子女的类推对此很有帮助,因为DOM的层次结构大体与此类似。

值得注意的是,像 > 这样的组合符在使用的时候,如果已经指定了上下文,左边的表达式可以省略:

jQuery('> p', '#content');
   //本质上和jQuery('#content > p')一样

在更为编程化的环境中,选择子元素应该用jQuery的 children() 方法完成,在该方法中可以用一个选择器过滤返回的元素。下面的代码选择 #content 元素的所有直接子元素:

jQuery('#content').children();

上述代码基本上和 jQuery('#content > *') 相同,但是有一个重要的差异;它运行的速度更快。jQuery不解析选择器,而是立即知道目的。但是,运行得更快这一差异并没有什么实用性。而且,速度的差别取决于浏览器和选择的内容,在某些情况下,这种差别几乎无法察觉。当处理存储在变量中的jQuery对象时, children() 方法特别有用。例如:

var anchors = jQuery('a');
// 获取所有锚元素的直接子元素可以用三种方式实现:
// #1
anchors.children();
// #2
jQuery('> *', anchors);
// #3
anchors.find('> *');

实际上,还有一种实现方式!在这种情况下,第一种方法最快。前面已经提到,可以向 children() 方法传递一个选择器表达式以过滤结果:

jQuery('#content').children('p');

只有作为 #content 直接子元素的段落元素才会返回。