JQuery:如何编写选择器来查找以给定子字符串结尾的类的元素?
我将JQuery用于我的web应用程序。我不知道如何为这种情况编写选择器JQuery:如何编写选择器来查找以给定子字符串结尾的类的元素?,jquery,selector,Jquery,Selector,我将JQuery用于我的web应用程序。我不知道如何为这种情况编写选择器 <a class="abc def xyz-delete-confirm efg">text</a> <a class="abc def delete-confirm">text</a> 文本 文本 我需要找到所有链接,有一个以“-删除确认”结尾的类或有一个名为“删除确认”的类 我知道如何处理一个名为“delete-confirm”的类的情况。“删除确认情况”如何?我可
<a class="abc def xyz-delete-confirm efg">text</a>
<a class="abc def delete-confirm">text</a>
文本
文本
我需要找到所有链接,有一个以“-删除确认”结尾的类或有一个名为“删除确认”的类
我知道如何处理一个名为“delete-confirm”的类的情况。“删除确认情况”如何?我可以用一个选择器来选择两种情况吗
谢谢你的意见
问候。您可以这样组合它们
var $allofthem = $('[class$="-delete-confirm"],.delete-confirm');
注意:由于这只是一个属性值,如果类名出现在元素的类列表的末尾并以结尾,则以选择器结尾,因此仅考虑删除确认
使用带有选择器的端点和类选择器的组合
对于纯选择,您可以这样做(不管它出现在类列表中的什么位置或有多少个类):
您可以这样组合它们
var $allofthem = $('[class$="-delete-confirm"],.delete-confirm');
注意:由于这只是一个属性值,如果类名出现在元素的类列表的末尾并以结尾,则以选择器结尾,因此仅考虑删除确认
使用带有选择器的端点和类选择器的组合
对于纯选择,您可以这样做(不管它出现在类列表中的什么位置或有多少个类):
类只是另一个属性吗?
这种情况的问题是,将类视为另一个属性,使用属性选择器很少能以一致的方式获得所需的内容
需要注意的一些事项:
- 如果项目有多个类,它是否有效
- 如果项目有多个类,并且您要匹配的是属性值中显示的第一个类,那么它是否有效
- 如果是最后一个呢
- 如果该项有一个包含您要查找的类名的类,它是否有效?(在您的示例中,可能是
没有可用的删除确认
)
还请记住,当您动态添加和删除类时,无法保证在获得class
属性的值时,类将以何种顺序显示
如果您有一组非常严格的情况,这将在中使用,尤其是当元素只有一个类时,属性选择器可能会起作用。否则,我建议您使用不同的方法
另类
正确的处理方法是使用不同的类-可能有任何进程正在添加*-delete confirm
类也可以添加另一个类-可能有delete confirm
或其他什么。然后,您可以在上面进行选择,而不必担心class属性
选择全部,然后选择过滤器()
另一个不理想但比属性选择器更有效的选项是选择所有可能的元素,然后使用回调函数filter()
返回结果,该函数使用正则表达式查找匹配的类
例如,如果元素都是
类只是另一个属性吗?
这种情况的问题是,将类视为另一个属性,使用属性选择器很少能以一致的方式获得所需的内容
需要注意的一些事项:
- 如果项目有多个类,它是否有效
- 如果项目有多个类,并且您要匹配的是属性值中显示的第一个类,那么它是否有效
- 如果是最后一个呢
- 如果该项有一个包含您要查找的类名的类,它是否有效?(在您的示例中,可能是
没有可用的删除确认
)
还请记住,当您动态添加和删除类时,无法保证在获得class
属性的值时,类将以何种顺序显示
如果您有一组非常严格的情况,这将在中使用,尤其是当元素只有一个类时,属性选择器可能会起作用。否则,我建议您使用不同的方法
另类
正确的处理方法是使用不同的类-可能有任何进程正在添加*-delete confirm
类也可以添加另一个类-可能有delete confirm
或其他什么。然后,您可以在上面进行选择,而不必担心class属性
选择全部,然后选择过滤器()
另一个不理想但比属性选择器更有效的选项是选择所有可能的元素,然后使用回调函数filter()
返回结果,该函数使用正则表达式查找匹配的类
例如,如果元素都是
PSL,非常感谢!!!这种类选择器的组合对我来说是新的。非常整洁。@jcsanyi您是对的,只需要在末尾添加一个,以确保它以该结尾或为下一个结尾留出空间。PSL,非常感谢!!!这种类选择器的组合对我来说是新的。非常整洁。@jcsanyi你是对的,只需要在结尾处放一个,以确保结尾处有一个或下一个的空间。jcsanyi,谢谢你的想法。非常有用。我会严格和一贯地使用“-删除确认”或“删除确认”为那些需要在删除前确认的链接。感谢您提及过滤器方法@听起来这可能对你有用。我想确保我在这里也得到了警告,这样其他看到这个问题的人就不会试图在更一般的情况下使用它。jcsanyi,谢谢你的想法。非常有用。我会严格和一贯地使用“-删除确认”或“删除确认”为那些需要在删除一些链接之前确认
$('#links a').filter(function () {
return /(^|\s|-)delete-confirm(\s|$)/.test($(this).attr('class'));
});