我有几个具有唯一ID的元素,如下所示:

<div id='item-1-top'></div>
<div id='item-2-top'></div>
<div id='item-3-top'></div>

我希望以下使用jQuery可以工作:
$("#item-[.]+-top").each(function() {
  $(this).hide();
});

我对正则表达式没有很好的了解,请多多指教,因为上述内容似乎不正确。

最佳答案

如果使用正则表达式执行此操作,则表达式将简单地为:

item-\d-top

其中\d表示任何一位数字(0..9),其他字符没有特殊含义(因此被视为文字)。

但是,jQuery当前没有正则表达式过滤器(只有开始/结束/包含/等之类的东西)-因此,您必须创建自己的正则表达式过滤器(可能的,但是如果您考虑要停止并考虑什么) /为什么要过滤并首先找出是否有更好的方法)。

更简单的方法是创建一个类(如serg555建议),因为这正是您处理这些项目的方式。

或者(如果您不能更改添加类的标记),然后使用现有的过滤器,在g.d.d.c's answer上展开,我可以这样做:
$('div[id^=item-][id$=-top]').hide()

(由于您现在或将来可能有多个以“top”结尾的项目,因此您需要更加具体,以避免无意间隐藏其他内容。)

08-28 21:13