我有以下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?
感谢。
答案 0 :(得分:5)
如果这是应用于菜单项的唯一(或第一个)类,则可以使用attribute starts with selector。
$('#sidebar [class^=m]')...
更好的方法是给它们所有公共类,比如menu-item
,除了你的其他类只是作为一个选择器来组合它们,然后简单地使用:
$('#sidebar .menu-item')...
答案 1 :(得分:3)
你也可以这样做:
$(".m3, .m5", "#sidebar")
但是......你不仅限于一个班级,你能用多个吗?要使用多个类,只需在它们之间留一个空格,例如:
<div class="m5 myClass">Stuff</div>
<div class="m3 myClass">Stuff 2</div>
然后您可以使用那个类,如下所示:
$("#sidebar .myClass")
或者,说你的结构是这样的:
<div id="sidebar">
<div class="m5">Stuff</div>
<div class="m3">Stuff 2</div>
</div>
您可以使用child-selector,如下所示:
$("#sidebar > div")
当然还有其他方法来修饰这只猫,它只取决于你的标记。
答案 2 :(得分:2)
你能用稍微不同的方式解决它吗?
如果你能够操纵你的HTML,可以在所有菜单项中添加一个额外的类作为占位符(例如,调用类'm')。
这将允许您搜索: $(“#sidebar .m)
答案 3 :(得分:0)
您可以使用begin-with选择器:
$("#sidebar *[class^='m']")