代码之家  ›  专栏  ›  技术社区  ›  ChiliYago

如何用空格和通配符选择类名

  •  1
  • ChiliYago  · 技术社区  · 14 年前

    在下面的html代码片段中,我试图创建一个JQuery表达式,以选择所有类为zz1的标记

    我对在类名中构造包含空格的select语法感到困惑。我还想要一个通配符在结尾,这是上面描述的'*'字符在结尾。

    <table class="Napa1-topnav zz1_TopNavigationMenu_4" border="0" cellSpacing="0" cellPadding="0">
    <tbody>
    <tr>
    <td style="white-space: nowrap;">
    <a class="zz1_TopNavigationMenu_1 Napa1-topnav zz1_TopNavigationMenu_3" style="border-bottom-style: none; border-right-style: none; border-top-style: none; font-size: 1em; border-left-style: none;" href="/sites/Brand1/SubSite
    
    3 回复  |  直到 14 年前
        1
  •  0
  •   user113716    14 年前

    如果这是仅有的3个类,并且您确定它们将按该顺序出现,那么您可以使用 attribute-starts-with

    试试这个:

    $('a[class^=zz1_TopNavigationMenu_1 Napa1-topnav zz1_TopNavigationMenu_]')
    

    这将选择 <a> 元素 class zz1_TopNavigationMenu_1 Napa1-topnav zz1_TopNavigationMenu_

    或者,您可以获取包含前两个类的元素,并使用过滤器确保它以第三个类结束。按照它的编写方式,它假定您的“通配符”将是一个或多个数字。

    $('a.zz1_TopNavigationMenu_1.Napa1-topnav').filter(function() {
        return /zz1_TopNavigationMenu_\d+$/.test($(this).attr('class'));
    });
    
        2
  •  3
  •   William Niu    14 年前

    空格字符在类名中无效;它是分隔符。一个标记可以包含多个类名。例如, <a id="foobar" class="foo bar"> 有两个类:foo和bar,因此 $('#foobar').getClasses()

    因此,如果要使用单个类选择元素,请执行以下操作:

    $('.foo')
    

    如果要选择具有多个类的元素,请执行以下操作:

    $('.foo.bar')
    
        3
  •  0
  •   prodigitalson    14 年前

    .zz1_TopNavigationMenu_1.Napa1-topnav.zz1_TopNavigationMenu_whatever

    将得到包含所有3个类的元素。通配符不起作用-没有使用CSS选择器的工具。我会添加一个类,比如: zz1_TopNavigationMenu 还有任何 zz1_TopNavigationMenu_whatever 会得到这个分组类。或者,如果可能的话,您可以使用ID或元素来获取它们。例如,如果它是一个菜单id,那么它们都是 li .zz1_TopNavigationMenu_1.Napa1-topnav li 或者类似的东西。

    看一看这个 docs on css selectors 用于jQuery。