jQuery:同时选择元素的类和ID?


170

我有一些链接,我想同时选择类和ID。

这是因为我有两种不同的行为。当一类链接获得一个类名时,它们会以一种方式起作用;当同一类链接获得另一个类名时,它们将表现出不同的行为。类名通过jquery切换。

因此,我必须能够同时选择一个链接类和ID。这可能吗?

我试过了:

 $("a .save #country")

没有任何结果。

Answers:


305

你可以做:

$("#country.save")...

要么

$("a#country.save")...

要么

$("a.save#country")...

根据你喜欢的。

因此,可以的,您可以指定一个选择器,该选择器必须匹配ID 类(以及可能的标记名和您想插入的其他任何内容)。


41
所以基本上就像:$(“#a .b”)表示id为a的元素内含类b的元素。$(“#ab”)表示具有类b和id a的元素。诀窍是#a和.b之间的空格
Bhumi Singhal

13
必须小心在类之前使用id选择器,否则它将不起作用。示例:$(“。save#country”)...不返回结果。
slotomo 2014年

43

只是要补充一点,Alex提供的答案对我有用,而不是突出显示为答案的答案。

这个对我没用

$('#country.save') 

但这确实做到了:

$('#country .save') 

所以我的结论是要利用空间。现在我不知道我使用的是新版本的jQuery(1.5.1),但是无论如何希望这对遇到我类似问题的任何人都有用。

编辑:充分的解释权(在对亚历克斯的回答的评论中)归功于费利克斯·克林,他说:

该空间是后代选择器,即AB的意思是“匹配所有与B匹配的元素,它们是与A匹配的元素的后代”。AB的意思是“选择匹配A和B的所有元素”。因此,这实际上取决于您要实现的目标。#country.save并且#country .save不是等效的。


2
您说的是“国家”而不是“国家”的问题吗?
amindfv

8

在id和class标识符之间添加空格时它将起作用

$("#countery .save")...


1
实际上这对我有用,因为它不像$('#countery.save')一样工作,谢谢!
Nikola

1
我发现有时对空间有些挑剔。像$(。selector> .item#id)一样有效,但是$(。selector> .item #id)无效。
日安倍·佩特里洛

21
该空间是后代选择器,即A B“匹配所有匹配B的元素,它们是匹配A的元素的后代”。AB表示“选择与A和B匹配的所有元素”。因此,这实际上取决于您要实现的目标。#countery.save并且#countery .save不是等效的。
Felix Kling 2012年

2

最后,适用于CSS的相同规则。

因此,我认为此参考可能会有一些有价值的用途。


您能否总结一下参考文献的内容?
krlmlr 2012年

实际上,根据api.jquery.com/category/selectors,jQuery有一些自己的选择器。同样,它实际上并没有说所有CSS 1-3选择器都受支持...
SamB 2012年

@SamB你是对的,但是它确实说它是从CSS 1-3 借来的,并添加了它自己的。我仍然认为与W3C的链接对本次讨论是有效的。
akousmata


1
$("a.save, #country") 

将同时选择“ a.save”类和“国家/地区” id。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.