我们知道,jQuery选择器和CSS选择器的写法十分类似,都具有隐式迭代的特点,无需循环遍历符合选择器要求的每个元素,使用起来相对方便,通常,把css选择器用$("")包起来就成了一个jQuery选择器,如

 

CSS选择器

jQuery选择器

ID选择器

#myID

$("#myID")

类选择器

.myClass

$(".myClass")

标签选择器

p

$("p")

层次选择器

div > strong

$("div>strong")

css称为伪类选择器

jQuery称之为过滤选择器

p:nth-child(3)

$("p:nth-child(3)")


那么两者的区别在哪里呢?

1、但两者的作用不同,CSS选择器找到元素后为设置该元素的样式,jQuery选择器找到元素后添加行为。

2、jQuery选择器拥有更好的跨浏览器的兼容性。

3、选择器的效率。

CSS选择器的效率

id选择器(#myid)
类选择器(.myclassname)
标签选择器(div,h1,p)
相邻选择器(h1+p)
子选择器(ul > li)
后代选择器(li a)
通配符选择器(*)
属性选择器(a[rel="external"])
伪类选择器(a:hover,li:nth-child)
上面九种选择器的效率是从高到低排下来的,基中ID选择器的效率是最高,而伪类选择器的效率则是最底。详细的介绍大家还可以点击Writing efficient CSS selectors。

jQuery选择器的效率

id选择器$('#id')和元素标签选择器$('form')
类选择器$('.className')
属性选择器$('[attribute=value]')和伪类选择器$(':hidden')

 

jQuery 选择器

选择器

实例

选取

*

$("*")

所有元素

#id

$("#lastname")

id="lastname" 的元素

.class

$(".intro")

所有 class="intro" 的元素

element

$("p")

所有 <p> 元素

.class.class

$(".intro.demo")

所有 class="intro" 且 class="demo" 的元素

 

 

 

:first

$("p:first")

第一个 <p> 元素

:last

$("p:last")

最后一个 <p> 元素

:even

$("tr:even")

所有偶数 <tr> 元素

:odd

$("tr:odd")

所有奇数 <tr> 元素

 

 

 

:eq(index)

$("ul li:eq(3)")

列表中的第四个元素(index 从 0 开始)

:gt(no)

$("ul li:gt(3)")

列出 index 大于 3 的元素

:lt(no)

$("ul li:lt(3)")

列出 index 小于 3 的元素

:not(selector)

$("input:not(:empty)")

所有不为空的 input 元素

 

 

 

:header

$(":header")

所有标题元素 <h1> - <h6>

:animated

 

所有动画元素

 

 

 

:contains(text)

$(":contains('W3School')")

包含指定字符串的所有元素

:empty

$(":empty")

无子(元素)节点的所有元素

:hidden

$("p:hidden")

所有隐藏的 <p> 元素

:visible

$("table:visible")

所有可见的表格

 

 

 

s1,s2,s3

$("th,td,.intro")

所有带有匹配选择的元素

 

 

 

[attribute]

$("[href]")

所有带有 href 属性的元素

[attribute=value]

$("[href='#']")

所有 href 属性的值等于 "#" 的元素

[attribute!=value]

$("[href!='#']")

所有 href 属性的值不等于 "#" 的元素

[attribute$=value]

$("[href$='.jpg']")

所有 href 属性的值包含以 ".jpg" 结尾的元素

 

 

 

:input

$(":input")

所有 <input> 元素

:text

$(":text")

所有 type="text" 的 <input> 元素

:password

$(":password")

所有 type="password" 的 <input> 元素

:radio

$(":radio")

所有 type="radio" 的 <input> 元素

:checkbox

$(":checkbox")

所有 type="checkbox" 的 <input> 元素

:submit

$(":submit")

所有 type="submit" 的 <input> 元素

:reset

$(":reset")

所有 type="reset" 的 <input> 元素

:button

$(":button")

所有 type="button" 的 <input> 元素

:image

$(":image")

所有 type="image" 的 <input> 元素

:file

$(":file")

所有 type="file" 的 <input> 元素

 

 

 

:enabled

$(":enabled")

所有激活的 input 元素

:disabled

$(":disabled")

所有禁用的 input 元素

:selected

$(":selected")

所有被选取的 input 元素

:checked

$(":checked")

所有被选中的 input 元素

 

CSS3 选择器

在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素。

"CSS" 列指示该属性是在哪个 CSS 版本中定义的。(CSS1、CSS2 还是 CSS3。)

选择器

例子

例子描述

CSS

.class

.intro

选择 class="intro" 的所有元素。

1

#id

#firstname

选择 id="firstname" 的所有元素。

1

*

*

选择所有元素。

2

element

p

选择所有 <p> 元素。

1

element,element

div,p

选择所有 <div> 元素和所有 <p> 元素。

1

element element

div p

选择 <div> 元素内部的所有 <p> 元素。

1

element>element

div>p

选择父元素为 <div> 元素的所有 <p> 元素。

2

element+element

div+p

选择紧接在 <div> 元素之后的所有 <p> 元素。

2

[attribute]

[target]

选择带有 target 属性所有元素。

2

[attribute=value]

[target=_blank]

选择 target="_blank" 的所有元素。

2

[attribute~=value]

[title~=flower]

选择 title 属性包含单词 "flower" 的所有元素。

2

[attribute|=value]

[lang|=en]

选择 lang 属性值以 "en" 开头的所有元素。

2

:link

a:link

选择所有未被访问的链接。

1

:visited

a:visited

选择所有已被访问的链接。

1

:active

a:active

选择活动链接。

1

:hover

a:hover

选择鼠标指针位于其上的链接。

1

:focus

input:focus

选择获得焦点的 input 元素。

2

:first-letter

p:first-letter

选择每个 <p> 元素的首字母。

1

:first-line

p:first-line

选择每个 <p> 元素的首行。

1

:first-child

p:first-child

选择属于父元素的第一个子元素的每个 <p> 元素。

2

:before

p:before

在每个 <p> 元素的内容之前插入内容。

2

:after

p:after

在每个 <p> 元素的内容之后插入内容。

2

:lang(language)

p:lang(it)

选择带有以 "it" 开头的 lang 属性值的每个 <p> 元素。

2

element1~element2

p~ul

选择前面有 <p> 元素的每个 <ul> 元素。

3

[attribute^=value]

a[src^="https"]

选择其 src 属性值以 "https" 开头的每个 <a> 元素。

3

[attribute$=value]

a[src$=".pdf"]

选择其 src 属性以 ".pdf" 结尾的所有 <a> 元素。

3

[attribute*=value]

a[src*="abc"]

选择其 src 属性中包含 "abc" 子串的每个 <a> 元素。

3

:first-of-type

p:first-of-type

选择属于其父元素的首个 <p> 元素的每个 <p> 元素。

3

:last-of-type

p:last-of-type

选择属于其父元素的最后 <p> 元素的每个 <p> 元素。

3

:only-of-type

p:only-of-type

选择属于其父元素唯一的 <p> 元素的每个 <p> 元素。

3

:only-child

p:only-child

选择属于其父元素的唯一子元素的每个 <p> 元素。

3

:nth-child(n)

p:nth-child(2)

选择属于其父元素的第二个子元素的每个 <p> 元素。

3

:nth-last-child(n)

p:nth-last-child(2)

同上,从最后一个子元素开始计数。

3

:nth-of-type(n)

p:nth-of-type(2)

选择属于其父元素第二个 <p> 元素的每个 <p> 元素。

3

:nth-last-of-type(n)

p:nth-last-of-type(2)

同上,但是从最后一个子元素开始计数。

3

:last-child

p:last-child

选择属于其父元素最后一个子元素每个 <p> 元素。

3

:root

:root

选择文档的根元素。

3

:empty

p:empty

选择没有子元素的每个 <p> 元素(包括文本节点)。

3

:target

#news:target

选择当前活动的 #news 元素。

3

:enabled

input:enabled

选择每个启用的 <input> 元素。

3

:disabled

input:disabled

选择每个禁用的 <input> 元素

3

:checked

input:checked

选择每个被选中的 <input> 元素。

3

:not(selector)

:not(p)

选择非 <p> 元素的每个元素。

3

::selection

::selection

选择被用户选取的元素部分。

3

 

 scrapy中的css:

和xpath选择器比起来,感觉CSS选择器容易一些,跟写.css时方法基本一样,就是在获取内容时和xpath不同,这里需要注意一下. 

jquery 标签选择器 和class选择器组合 jq的选择器和css的区别_css

jquery 标签选择器 和class选择器组合 jq的选择器和css的区别_选择器_02

jquery 标签选择器 和class选择器组合 jq的选择器和css的区别_选择器_03

 

 

Jquery属性选择器(同时匹配多个条件,与或非)

1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title>Test multi selection</title>
 5     <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
 6     <script type="text/javascript">
 7  
 8     $().ready(function(){
 9          
10         debugger;// open console and click F10
11         //多条件选择
12         $('#td1,#td2,p').css('color','red');
13         //选择内容不是id=td1
14         $('tbody td:not(#td1)').css('color','green');
15         //选择条件1 attr1="a1" 和 条件2 attr2="a2"的元素
16         $('[attr1="a1"][attr2="a2"]').css('color','blue');
17         //选择条件1 attr1="a1" 或者 条件2 attr2="a2"的元素
18         $('[attr1="a1"],[attr2="a2"]').css('color','yellow');
19  
20         //选择不满足 条件1 attr1="a1" 的元素
21         $('tbody td[attr1!="a1"]').css('color','purple');
22          
23         //选择不满足 条件1 attr1="a1" 或 条件2 attr2="a2"的元素
24         $('tbody td:not([attr1="a1"],[attr2="a2"])').css('color','orange');
25         $('tbody td[attr1!="a1"][attr2!="a2"]').css('color','black');
26  
27         //选择不满足 条件1 attr1="a1" 和 条件2 attr2="a2"的元素
28         $('tbody td:not([attr1="a1"][attr2="a2"])').css('color','#ff7700');
29         $('tbody td[attr1!="a1"],tbody td[attr2!="a2"]').css('color','black');
30  
31         //选择tboy中td标签attr1!="a1" 和 所有标签中attr2!="a2", 即除了<td id="td3" attr1="a1" attr2="a2">3</td>的其它所有标签元素
32         $('tbody td[attr1!="a1"],[attr2!="a2"]').css('color','grey');
33     })
34  
35     </script>
36 </head>
37 <body>
38 <table border="1px">
39     <thead>
40         <tr>
41             <td>One</td>
42             <td>Two</td>
43             <td>Three</td>
44             <td>Four</td>
45             <td>Five</td>
46         </tr>
47     </thead>
48     <tbody>
49         <tr>
50             <td id="td1">1</td>
51             <td id="td2">2</td>
52             <td id="td3" attr1="a1" attr2="a2">3</td>
53             <td id="td4" attr1="a1">4</td>
54             <td id="td5">5</td>
55         </tr>
56     </tbody>
57 </table>
58 <p>I am first paragraph </p>
59 </body>
60 </html>