javascript - 通过自定义数据/属性选择第二个元素

标签 javascript css css-selectors

好的。我正在尝试通过 CSS 选择器获取 javascript 中的元素。要通过自定义元素获取一个,我知道就像“element[custom-name="Literal name"]”。 好的。这行得通。但现在我需要得到第二个。我的意思是我有一些元素具有确切的自定义名称,并且我需要为每个人应用不同的规则(这里只有 5 个)。

如何选择其他的?是否可以通过 CSS 选择它们?

PS:它们位于随机位置,所以可能第一个是一次第 5 个元素,如果我刷新页面,它可能是容器内的第 10 个元素。

PS2:不,在我的情况下不可能更改 HTML :( 。我唯一可以更改的代码是 CSS 和 javascript。

感谢您阅读我的文章! :D

最佳答案

假设您不能通过另一个与顺序无关的因素来选择特定的,您可以使用伪选择器 :nth-child 。在您的情况下,完整的 CSS 选择器将是 element[custom-name="Literal name"]:nth-child(2) - 替换 2对于您认为合适的任何其他数字。一般来说,仅按文档中的位置进行选择并不是最好的主意,因为位置可能比属性更改得更频繁 - 但无论如何,有一个纯 CSS 解决方案!

请注意,这仅在您正在使用的元素是共同父元素的 唯一 子元素时才有效 - 如果您正在寻找与整个查询一般匹配的第二个元素整个文档,无法使用 CSS 选择器做到这一点。相反,您可以确保为每个元素添加一个唯一类或其他区分属性,或者简单地使用 querySelectorAll - 在这种情况下,您可以使用以下小片段获取第二个元素:document.querySelectorAll('element[custom-name="Literal name"]')[1] .

关于javascript - 通过自定义数据/属性选择第二个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44282350/

相关文章:

css - 滚动条删除图像的右侧部分

css - 使用 bool 条件组合两个或多个 CSS 选择器

Javascript 名称数组输入选择器 (name[sometext])

javascript - 如何使用 XUL 在 Firefox 中克隆 <browser> 元素?

javascript - 试图了解这个 JS 函数的作用及其参数是什么,有人可以解释一下吗?

html - 将图像叠加到另一个 div 中

CSS 不是带有后内容的选择器

javascript - 为什么 .filter() 在 Internet Explorer 8 中不起作用?

javascript - 这个符号 "/^\s*$/.test(val)"是什么意思

html - CSS 网格布局/图像定位问题