码迷,mamicode.com
首页 > Web开发 > 详细

JQuery 1.*速成版之一

时间:2016-06-19 14:19:44      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

  jQuery1.x 最核心的组成部分就是:选择器引擎。它继承了 CSS 的语法,可以对 DOM 元素的标签名、属性名、状态等进行快速准确的选择,并且不必担心浏览器的兼容性。jQuery选择器实现了 CSS1~CSS3 的大部分规则之外,还实现了一些自定义的选择器,用于各种特殊状态的选择。

一.简单选择器

选择器          CSS 模式            jQuery 模式                             描述
元素名             div {}                $(‘div‘)                 获取所有div 元素的DOM 对象
ID                  #box {}             $(‘#box‘)             获取一个ID 为box元素的 DOM 对象
类(class)         .box{}               $(‘.box‘)               获取所有class为box的所有DOM对象

那么对于缺失不存在的元素,我们使用jQuery 调用的话,怎么去判断是否存在呢?因为本身返回的是jQuery 对象,可能会导致不存在元素存在与否,都会返回 true。
if ($(‘#pox‘).length > 0) { //判断元素包含数量即可
$(‘#pox‘).css(‘color‘, ‘red‘);
}
除了这种方式之外,还可以用转换为 DOM 对象的方式来判断,例如:if ($(‘#pox‘).get(0)) {} 或 if ($(‘#pox‘)[0]) {} //通过数组下标也可以获取 DOM 对象.

二.进阶选择器

在简单选择器中,我们了解了最基本的三种选择器:元素标签名、ID和类(class)。那么在基础选择器外,还有一些进阶和高级的选择器方便我们更精准的选择元素。
选择器                   CSS模式                      jQuery模式                                  描述
群组选择器         span,em,.box {}         $(‘span,em,.box‘)               获取多个选择器的DOM 对象
后代选择器         ul li a {}                     $(‘ul li a‘)                           获取追溯到的多个DOM 对象
通配选择器         * {}                           $(‘*‘)                                 获取所有元素标签的DOM 对象 

还有一种前缀选择器,可以在ID和类(class)中指明元素前缀,比如:
$(‘div.box‘); //限定必须是.box元素获取必须是div
$(‘p#box div.side‘); //同上
类(class)有一个特殊的模式, 就是同一个DOM 节点可以声明多个类(class)。那么对于这种格式,有多个 class 选择器可以使用,但要注意和class 群组选择器的区别。
.box.pox { color:red; }  //双 class 选择器,IE6 出现异常,其他的浏览器正常。$(‘.box.pox‘).css(‘color‘, ‘red‘); //兼容 IE6,解决了异常。

 三.高级选择器

在前面我们学习六种最常规的选择器, 一般来说通过这六种选择器基本上可以解决所有DOM 节点对象选择的问题。但在很多特殊的元素上,比如父子关系的元素,兄弟关系的元
素,特殊属性的元素等等。在早期CSS 的使用上,由于IE6 等低版本浏览器不支持,所以这些高级选择器的使用也不具备普遍性,但随着jQuery 兼容,这些选择器的使用频率也越来越高。
选择器                         CSS模式             jQuery 模式                                    描述
后代选择器                   ul li a {}             $(‘ul li a‘)                        获取追溯到的多个 DOM 对象
子选择器                      div > p {}          $(‘div p‘)                         只获取子类节点的多个 DOM 对象
next选择器                  div + p {}          $(‘div + p‘)                      只获取某节点后一个同级DOM对象
nextAll选择器              div ~ p {}          $(‘div ~ p‘)                       获取某节点后面所有同级DOM对象 

在高级选择器中, 除了后代选择器之外, 其他三种高级选择器是不支持IE6 的, 而jQuery却是兼容 IE6 的。

jQuery 为后代选择器提供了一个等价find()方法 ===> $(‘#box‘).find(‘p‘).css(‘color‘, ‘red‘); //和后代选择器等价

jQuery 为子选择器提供了一个等价 children()方法 ===> $(‘#box‘).children(‘p‘).css(‘color‘, ‘red‘); //和子选择器等价

jQuery 为next选择器提供了一个等价的方法next() ===> $(‘#box‘).next(‘p‘).css(‘color‘, ‘red‘); //和 next选择器等价

jQuery 为nextAll选择器提供了一个等价的方法 nextAll() ===> $(‘#box‘).nextAll(‘p‘).css(‘color‘, ‘red‘); //和 nextAll选择器等价

注意:层次选择器对节点的层次都是有要求的,比如子选择器,只有子节点才可以被选择到,孙子节点和重孙子节点都无法选择到。next和nextAll选择器,必须是同一个层次的后一个和后 N个,不在同一个层次就无法选取到了。
  在find()、next()、nextAll()和 children()这四个方法中,如果不传递参数,就相当于传递了“*” ,即任何节点,我们不建议这么做,不但影响性能,而且由于精准度不佳可能在复杂的HTML 结构时产生怪异的结果。

JQuery 1.*速成版之一

标签:

原文地址:http://www.cnblogs.com/codc-5117/p/4563248.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!