你能将 jQuery 选择器与(稍微更)高级的逻辑分组吗?

发布于 2024-12-20 05:46:08 字数 561 浏览 1 评论 0原文

我们正在开发一个过滤系统,您可以在其中获得多组选项,例如:

颜色 红、蓝、绿

价格范围 £0-£5、£6-£10、£11+

制造 阿迪达斯、耐克、匡威

每个选项都是一个复选框。我们使用以下逻辑进行过滤:

  • 组中的 OR 选项
  • 用 AND 将选项连接起来

因此,如果我要检查 Red、Blue、£0-£5、Nike 和 Converse,逻辑将是:

(Red OR Blue) AND ( £0-5) AND(耐克或匡威)

每个复选框都有一个 ID。我希望使用上面的逻辑构建一个选择器,但我不确定在 jQuery 中执行此操作的最佳方法。显然,AND 只是附加,而 OR(或等效项)在这些选择器中使用命令,但是如果没有某种分组方式,这会破坏逻辑,即:

$('(#red,#blue)(#price0to5)( #nike,#converse)')

有什么建议或替代方案吗?

We're working on a filter system, where you get groups of options, for instance:

Colour
Red, Blue, Green

Price Range
£0-£5, £6-£10, £11+

Make
Adidas, Nike, Converse

Each option is a single checkbox. We filter with the following logic:

  • OR options from a group
  • join those with an AND

So, if I was to check Red, Blue, £0-£5, Nike and Converse, the logic would be:

(Red OR Blue) AND (£0-5) AND (Nike OR Converse)

Each checkbox has an ID. I wish to build a selector using the logic above, but I'm unsure about the best way to do it in jQuery. Obviously ANDs are just appended and ORs (or the equivalent) use commands in these selectors, but that would break the logic without some way of grouping, i.e.:

$('(#red,#blue)(#price0to5)(#nike,#converse)')

Any suggestions or alternatives?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

木有鱼丸 2024-12-27 05:46:08

假设您有一堆具有适用类标识的项目:

<div class="red nike underfive"></div>
<div class="blue green converse elevenup"></div>
<div class="blue converse underfive"></div>

OR 相当于逗号,而 AND 需要链接:

$(".red,.blue").filter(".underfive").filter(".nike,.converse"); // 1 and 3
$(".green").filter(".underfive"); // empty
$(".blue").filter(".green"); // 2

Let's assume you have a bunch of items with the applicable class identities:

<div class="red nike underfive"></div>
<div class="blue green converse elevenup"></div>
<div class="blue converse underfive"></div>

ORs are equivalent to commas, while ANDs require chaining:

$(".red,.blue").filter(".underfive").filter(".nike,.converse"); // 1 and 3
$(".green").filter(".underfive"); // empty
$(".blue").filter(".green"); // 2
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文