首页 > 解决方案 > 我可以使用什么选择器来排除带有后缀的 ID?

问题描述

我在一个页面上有一堆 div(bg_1、bg_5、bg_112等),我想分配样式“display:inline-block”。

但是,我有其他名为bg_1_log、bg_5_log、bg_112_log等的 div,我不想将这种样式分配给这些 div。

我试过了:

 $('[id^=bg_]').attr('style','display:inline-block');

这可行,但当然会将样式分配给以“ bg_ ”开头的所有div,包括bg_112_log ...

我怎样才能“为所有只是 bg_+number 的 div 分配一个样式?

我正在使用 jQuery,所以无论是 jQuery 还是 JS 都可以。

标签: javascriptjquery

解决方案


您可以使用使用选择器,并且属性包含选择器,例如:

$('[id^=bg_]').not('[id*=_log]')

或者,您也可以按照@zfrisch 的建议使用正则表达式,但这是一个改进的版本(选择器不仅限于 div):

$('*').filter(function() { return this.id.match(/bg_\d$/) })

或者,甚至像:

$('*').attr('id').match(/bg_\d$/)

推荐阅读