jQuery:同时选择一个元素的类和id?

ajs*_*sie 162 jquery dom css-selectors jquery-selectors

我有一些链接,我想同时选择类和id.

这是因为我有两种不同的行为.当一类链接获得一个类名时,它们以一种方式运行,当相同的链接段获得另一个类名时,它们的行为会有所不同.类名是用jquery切换的.

所以我必须能够同时选择一个链接类AND id.这可能吗?

我试过了:

 $("a .save #country")
Run Code Online (Sandbox Code Playgroud)

没有任何结果.

cle*_*tus 293

你可以做:

$("#country.save")...
Run Code Online (Sandbox Code Playgroud)

要么

$("a#country.save")...
Run Code Online (Sandbox Code Playgroud)

要么

$("a.save#country")...
Run Code Online (Sandbox Code Playgroud)

根据你喜欢的.

所以是的,您可以指定一个必须匹配ID 类的选择器(可能还有标记名称和您要引入的任何其他内容).

  • 所以基本上它是这样的:$("#a .b")表示元素中带有类别b的元素的元素.$("#ab")表示具有类b和id a的元素.诀窍是#a和.b之间的空间 (37认同)
  • 必须注意在类之前使用id选择器,否则它不起作用.示例:$(".save#country")...不返回结果. (11认同)

Nik*_*ola 41

只是添加Alex提供的答案为我工作,而不是作为答案突出显示的答案.

这个对我不起作用

$('#country.save') 
Run Code Online (Sandbox Code Playgroud)

但是这个做了:

$('#country .save') 
Run Code Online (Sandbox Code Playgroud)

所以我的结论是使用空间.现在我不知道是不是我正在使用的新版jQuery(1.5.1),但无论如何希望这对任何有类似问题的人都有帮助.

编辑:完全归功于解释(在对Alex的回答的评论中)给Felix Kling说:

空间是后代选择器,即AB表示"匹配匹配B的所有元素,它们是匹配A的元素的后代".AB表示"选择与A和B匹配的所有元素".所以它真的取决于你想要达到的目标.#country.save并且#country .save是不等价的.

  • 问题是你说"反对"而不是"国家"吗? (2认同)

Ale*_*lex 8

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

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

  • 空间是*后代选择器*,即"AB"表示"匹配与B匹配的所有元素,它们是匹配A的元素的后代".`AB`表示"选择与A和B匹配的所有元素".所以它真的取决于你想要达到的目标.`#countery.save`和`#countery .save`不等同. (19认同)