类只是另一个属性吗?
这种情况的问题在于,将类视为另一个属性,并且使用属性选择器很少能以一致的方式为您提供所需的内容。
一些需要注意的事项:
- 如果该项目有多个类别,它是否有效?
- 如果该项目有多个类并且您要匹配的是属性值中显示的第一个类,它是否有效?
- 如果是最后一个呢?
- 如果该项目的类包含您要查找的类名,它是否有效?(在你的例子中,也许
no-delete-confirm-available
)?
还要记住,当您动态添加和删除类时,无法保证在您获取class
属性值时这些类将显示的顺序。
如果您有一组非常严格的情况,这将被使用,特别是如果元素只有 1 个类,属性选择器可能会起作用。否则,我建议您使用不同的方法。
不一样的班级
处理这个问题的正确方法是使用不同的类 - 可能有任何添加类的过程*-delete-confirm
也添加另一个类 - 可能has-delete-confirm
是什么。然后您可以选择它,而不必担心类属性。
全选,然后 filter()
另一个不理想但比属性选择器效果更好的选项是选择所有可能的元素,然后filter()
使用使用正则表达式的回调函数查找匹配类的结果。
例如,如果元素都是 的<a>
子元素,则#links
可以使用:
$('#links a').filter(function () {
return /(^|\s|-)delete-confirm(\s|$)/.test($(this).attr('class'));
});
您可能还会发现这个类似的问题很有趣:
jQuery:How to select elements with specific class here?