我有一个很简单的问题。
在 jquery 上,多选,假设 $(".class1, #id2") 选择元素作为“或”运算符,因为它将选择所有带有 .class1 的元素和所有带有 #id2 的元素。
但是,有没有办法使选择成为“和”运算符?在示例中,将选择同时具有 class1 和 id2 的所有元素,但如果它只有 class1 或只有 id2,则不得选择它们。
我知道只有一个元素可以有 id2,但这是一个普遍的问题,您可以根据需要更改 id2,例如 data-id
我有一个很简单的问题。
在 jquery 上,多选,假设 $(".class1, #id2") 选择元素作为“或”运算符,因为它将选择所有带有 .class1 的元素和所有带有 #id2 的元素。
但是,有没有办法使选择成为“和”运算符?在示例中,将选择同时具有 class1 和 id2 的所有元素,但如果它只有 class1 或只有 id2,则不得选择它们。
我知道只有一个元素可以有 id2,但这是一个普遍的问题,您可以根据需要更改 id2,例如 data-id
只需链接选择器:
$('#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
尝试以下操作:
$("#id2.class1") // selects an element with id of 'id2' and class of 'class1'
或使用Attribute Equals
选择器:
$(".class1[id='id2']")
我知道只有一个元素可以有 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
见演示