jquery - jQuery 有类似 :any or :matches pseudo-class? 的东西吗

标签 jquery css jquery-selectors css-selectors

我想简化我的选择器:

'#a #b a[href^=mailto], .c .d a[href^=mailto]'

收件人:

':matches(#a #b, .c .d) a[href^=mailto]'

仅使用 jQuery 选择器是否可行?或者我必须这样做:

$('#a #b, .c .d').find('a[href^=mailto]')

哪个不那么灵活。

最佳答案

jQuery 不提供等价于 :any()/:matches() 的选择器(其中 :any() 是原始形式和 it was first implemented internally in Gecko and WebKit )。如果您不能或不愿意扩展您的选择器,您确实必须分解您的选择器字符串并进行单独的方法调用。

您使用哪种方法取决于 :matches() 将出现在您的选择器中的确切位置:

  • 如果 :matches() 单独出现在选择器字符串的开头,在任何组合器之前,如问题中:

    ':matches(#a #b, .c .d) a[href^=mailto]'
    

    在出现:matches()的地方替换$(),将选择器的剩余部分传递给.find().children().next().nextAll() 取决于 :matches() 之后的组合子(分别为后代、子代、+~)。

    转自问题:

    $('#a #b, .c .d').find('a[href^=mailto]')
    
  • 如果 :matches() 单独出现在组合子之后,例如:

    '#a #b > :matches(.c, .d)'
    

    在出现:matches()的地方替换上面方法之一:

    $('#a #b').children('.c, .d')
    
  • 如果 :matches() 作为另一个复合选择器的一部分出现,例如:

    ':matches(#a #b, .c .d) a[href^=mailto]:matches(.e, .f)'
    

    在出现 :matches() 的地方替换 .filter():

    $('#a #b, .c .d').find('a[href^=mailto]').filter('.e, .f')
    

关于jquery - jQuery 有类似 :any or :matches pseudo-class? 的东西吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21339353/

相关文章:

css光标url定位

css - 快速媒体查询故障

jquery - 如何使用jquery选择div inside div inside div

html - 复选框的 CSS 格式

javascript - 将表格单元格添加到现有表格行,jQuery

jQuery 如何测试此 <a> 是否具有 href 属性

javascript - 如何通过滚动按钮触发打开新标签页

javascript - jquery:在div中加载html页面

javascript - 在加载字段集时,我如何专注于我选择的文本字段

javascript - 组合 Jquery 脚本崩溃页面