0

我有一个很简单的问题。

在 jquery 上,多选,假设 $(".class1, #id2") 选择元素作为“或”运算符,因为它将选择所有带有 .class1 的元素和所有带有 #id2 的元素。

但是,有没有办法使选择成为“和”运算符?在示例中,将选择同时具有 class1 和 id2 的所有元素,但如果它只有 class1 或只有 id2,则不得选择它们。

我知道只有一个元素可以有 id2,但这是一个普遍的问题,您可以根据需要更改 id2,例如 data-id

4

3 回答 3

4

只需链接选择器:

$('#id2.class1')

与 CSS 中的相同。来自CSS 选择器规范

简单选择器是类型选择器通用选择器,后跟零个或多个属性选择器ID 选择器伪类,顺序不限。如果所有组件都匹配,则简单选择器匹配。

您可能想知道您既没有使用类型选择器也没有使用通用选择器,但通用选择器在这里是隐含的。因此,#id2与 相同*#id2

另外你可能会注意到这里没有提到类选择器,但我认为这只是因为它是一个特定于语言的选择器(HTML)并且相当于[class~="class1"].

因此,您可以简单地以任何您想要的顺序组合 ID 选择器、类选择器、属性选择器和伪类选择器,并且可以选择在它们前面加上类型选择器。

一些例子:

p.foo
a[rel=follow]
#foo.bar.baz[data-id=42]:hover

最后一个相当于

.baz.bar:hover[data-id=42]#foo
于 2012-08-14T22:15:05.547 回答
2

尝试以下操作:

 $("#id2.class1") // selects an element with id of 'id2' and class of 'class1' 

或使用Attribute Equals选择器:

 $(".class1[id='id2']")
于 2012-08-14T22:15:15.233 回答
2

我知道只有一个元素可以有 id2,但这是一个普遍的问题,您可以根据需要更改 id2,例如 data-id

id 和 data-id 存在巨大差异,您问题答案的语法将完全不同。

使用 id 和 class 最多可以得到 none 或 1 个元素(因为你应该有唯一的 id)使得“and”有点多余。

$("#myDiv.myClass") // Should in theory only return a single element

但是,如果您查询具有相同 data-id 和类的元素,则可以返回多个元素。

寻找公共属性和类值可能如下所示:

$(".myClass[data-id='myDiv']")​; // Can return multiple elements

演示

于 2012-08-14T22:20:57.647 回答