jQuery 选择器问题

发布于 2024-09-08 13:24:35 字数 676 浏览 2 评论 0原文

我有以下 jQuery 代码,一切正常:

         $("#sidebar .m3, #sidebar .m5").toggle(function() {                  
               $(this).find("img").attr({­src:"images/Up.png"});                 
               }, function() {
               $(this).find("img").attr({­src:"images/Down.png"});                  
         }); 

我的问题是,不是单独指定 $("#sidebar .m3, #sidebar .m5"),其中我的菜单项可能具有类 m1、m2、m3、m4, m5等, 无论如何,是否有类似的东西:

$("#sidebar .m[*]").

这将满足“.m”之后的任何数字,所以我不需要硬编码 m3 或 m5 ?

谢谢。

I have the following jQuery code which all works fine:

         $("#sidebar .m3, #sidebar .m5").toggle(function() {                  
               $(this).find("img").attr({­src:"images/Up.png"});                 
               }, function() {
               $(this).find("img").attr({­src:"images/Down.png"});                  
         }); 

My question is, instead of individually specifying $("#sidebar .m3, #sidebar .m5"), where my menu items may have the classes m1,m2,m3,m4,m5 etc,
is there anyway of having something like:

$("#sidebar .m[*]").

That will cater for any number after the ".m" , so I don't need to hard code m3 or m5?

Thanks.

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

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

发布评论

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

评论(4

蓝颜夕 2024-09-15 13:24:35

如果这是应用于菜单项的唯一(或第一个)类,您可以使用 属性以选择器 开头。

$('#sidebar [class^=m]')...

更好的方法是为它们提供一个公共类,例如 menu-item,以及其他仅用作选择器对它们进行分组的类,然后简单地使用:

$('#sidebar .menu-item')...

If that's the only (or first) class applied to the menu item you can use the attribute starts with selector.

$('#sidebar [class^=m]')...

A better way would be to give them all a common class, like menu-item, in addition to your other class that functions simply as a selector to group them all, then simply use:

$('#sidebar .menu-item')...
装纯掩盖桑 2024-09-15 13:24:35

你也可以这样做:

$(".m3, .m5", "#sidebar")

但是......你不限于一个类,你可以只使用多个类吗?要使用多个类,只需在它们之间留一个空格,例如:

<div class="m5 myClass">Stuff</div>
<div class="m3 myClass">Stuff 2</div>

然后您可以使用 that 类,如下所示:

$("#sidebar .myClass")

或者,假设您的结构如下:

<div id="sidebar">
  <div class="m5">Stuff</div>
  <div class="m3">Stuff 2</div>
</div>

您可以仅使用 child-selector,如下所示:

$("#sidebar > div")

当然还有其他方法来给这只猫剥皮同样,这仅取决于您的标记是什么。

You can also do this:

$(".m3, .m5", "#sidebar")

But...you're not restricted to one class, can you just use multiple? To use multiple classes just have a space between them, for example:

<div class="m5 myClass">Stuff</div>
<div class="m3 myClass">Stuff 2</div>

Then you can use that class, like this:

$("#sidebar .myClass")

Or, say your structure is like this:

<div id="sidebar">
  <div class="m5">Stuff</div>
  <div class="m3">Stuff 2</div>
</div>

You can just use the child-selector, like this:

$("#sidebar > div")

There are of course other ways to skin this cat as well, it just depends on what your markup is.

一瞬间的火花 2024-09-15 13:24:35

你能用稍微不同的方式来解决这个问题吗???

如果您有能力操作 HTML,可以向所有菜单项添加一个附加类作为占位符(例如,将类称为“m”)。

这将允许您搜索:
$("#sidebar.m)

Can you tackle it a slightly different way???

If you have the ability to manipulate your HTML could add an additional class to all the menu items as a placeholder (for example, call the class 'm').

This would allow you to search on:
$("#sidebar .m)

神经暖 2024-09-15 13:24:35

您可以使用开头选择器:

$("#sidebar *[class^='m']")

You could use the begins-with selector:

$("#sidebar *[class^='m']")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文