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

jquery hasClass匹配元素

  •  4
  • Victor  · 技术社区  · 14 年前

    在jquery中,我可以将“closest”或parents()与“hasClass”组合在一起,所以如果它存在于页面上,它会给我一个与给定类最接近的元素?

    var matchingDiv = $(this).closest('div').hasClass('SomeClass')
    
    if ( matchingDiv != null )
    {
       //we found matching element now manipulate it
    
    }
    

    我总是有一个匹配的DIV元素,或者没有。 谢谢。

    7 回复  |  直到 12 年前
        1
  •  5
  •   user113716    14 年前
    var matchingDiv = $(this).closest('div.SomeClass')
    
    if ( matchingDiv.length )
    {
       // use length to find if there was a match.
       // closest() will always return an object.
    }
    

    如果这不起作用,可以发布一些HTML。可能有问题吗?

        2
  •  1
  •   kmehta    14 年前

    试试这个,最近的选择:

    var matchingDiv = $(this).closest('div.SomeClass')
    
    if ( matchingDiv != null )
    {
       //we found matching element now manipulate it
    
    }
    
        3
  •  1
  •   Naeem Sarfraz    14 年前

    Closest 选择一个选择器,这样您就可以执行以下操作:

     var matchingDiv = $(this).closest('div.SomeClass')
    

    你的下一行有问题,你 should 像这样检查jquery结果:

    if ( matchingDiv.length )
    {
        //we found matching element now manipulate it
    }
    
        4
  •  1
  •   Robin Maben    12 年前

    如果需要检查当前元素本身是否可能是您要查找的祖先..您可以使用 is() closest() 如下:

    var matchingDiv = $(this).closest('.SomeClass');
    
    matchingDiv = matchingDiv.length == 0 ? (matchingDiv.is('.SomeClass') ? matchingDiv : null) : matchingDiv
    
    if ( matchingDiv != null )
    {
       //found matching element 
    
    }
    
        5
  •  0
  •   Vivin Paliath    14 年前

    你在问这是否有效?

    在我的头脑中,我会说它是这样的,因为jquery范式是基于链接在一起的jquery函数。

        6
  •  0
  •   andres descalzo    14 年前

    doc for closest

    var matchingDiv = &(this).closest('.SomeClass')
    
    if ( matchingDiv != null )
    {
       //we found matching element now manipulate it
    
    }
    
        7
  •  0
  •   Pointy    14 年前

    最近的()和parents()的区别在于,如果选择器与多个元素匹配,parents()可以为您提供多个元素。(这值多少钱)