【问题标题】:Wildcad selector with ignoring similar matches [duplicate]忽略相似匹配的 Wildcad 选择器 [重复]
【发布时间】:2013-10-22 12:50:26
【问题描述】:

所以我想隐藏所有元素并使用

$('[id^=option_]').hide();

这很好用,但是它隐藏了我不想隐藏的东西。我有动态生成的ID,如

option_1 option_1_form 选项_2 option_2_form

如您所见,它还会隐藏表单。所以我想知道是否有办法过滤 _form 或为选择器使用某种正则表达式

('[id^=option_][id$=/[^0-9 ]+/]')

不是说这个例子会起作用,而是我的意思的一个例子!这将强制排除 _form,因为它必须以数值结尾。如果你知道更好的方法,我也赞成。我不是 jQuery 奇才。

【问题讨论】:

  • 您提出的解决方案寻找以数字结尾的内容,但您的描述似乎暗示您只想不包括 _form。如果您实际上只想排除带有_form 的东西,那更容易并且不需要正则表达式。
  • 我正在寻找或者,因为我不确定使用 jQuery 哪个更容易/更好/更有效。有点为什么我把它留给解释:)

标签: javascript jquery regex


【解决方案1】:

您可以尝试使用:not 排除forms

$('[id^=option_]:not(form)').hide();

【讨论】:

  • 这成功了,谢谢。但是,您知道“不”是否比“过滤”更好用吗?似乎过滤器必须第二次通过 dom 才能删除它不想要的任何东西,因为第一次在 dom 中不能这样做?无论哪种方式,我都会接受这一点,因为它确实有效。
【解决方案2】:

如果您只想排除 id 中包含 _form 的任何内容:

$('[id^=option_]:not([id|=_form])').hide();

|= 用于“包含”。

【讨论】:

  • 你的和上面的有什么区别?就像他的没有 id|= 的作品一样。还在学习这些小技巧。
  • @AustinBest 另一个答案排除了<form> 元素,这与排除带有id 且包含字符串_form 的元素非常不同。
  • 那么简而言之,您的方法是上述方法的一种更具体的方法?
  • 这是两个不同的东西。如果您想排除 <form> 元素,那么另一个答案会更好。如果您可以拥有不是<form> 的元素,而它们的id 中可以有_form 您也想排除,这将起作用。例如,<span id="option_form_span"> 将被我的代码排除在外,并包含在另一个代码中。
  • 哈,我明白你在说什么了。 TY
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-23
  • 1970-01-01
相关资源
最近更新 更多