jQuery排除如果孩子有跨度与某类?

问题描述

| 我有这个Chrome扩展程序,它在您的戳下面添加了一个“戳所有”按钮。我正在尝试对其进行更新,以便当您有6个或更多戳时,通过“显示全部(6)”可以刷新“我的所有戳”按钮。 [因为当您单击\“显示全部(6)\”时,它消失了]。所以在我的代码中,这就是我添加按钮的方式:
$(\"#pagelet_pokes a:last\").after(html_code)
因此在facebook中有一个id为\“ pagelet_pokes \”的div,它具有大量的sub div,最终有一个w / class = \'phs \'的div,其中有一个,这是oke链接。 因此,为了简化:
<div id=\'pagelet_pokes\'>
...
<div class=\'phs\'>
<ul>
<li><div><div><a href>Poke #1</a></div></div></li>
<li><div><div><a href>Poke #2</a></div></div></li>
</div>
</div>
因此,jQuery在last之后添加了我的按钮。很好 问题是,\“显示全部(6)\”在底部添加了另一个
  • ,并且单击它会隐藏自身而不是将其删除[display = none]。因此,在上面的代码之后,它添加了:
    <li class=\'showAll\'>
    <a href=\'#\'>
    <span class=\'fwb\'>Show all (6)</span>
    </a>
    </li>
    
    现在,我尝试将我的JavaScript代码更改为此:
     $(\"#pagelet_pokes a:last\").not(\'.showAll\').after(html_code)
    
    它没有用,因为第一个选择器选择了所有,然后丢弃所有具有.showAll的a \,但这无济于事,因为.showAll位于子节点中! 因此,我的问题可以归结为这一点。我如何在#pagelet_pokes中选择最后一个\ a,它的子跨度不属于类“ pokeAll \”?是否有一些可能会像这样工作的“!”选择器? :
    $(\'#pagelet_pokes !li.showAll a:last\')
    ?谢谢!     

    解决方法

            使用
    not-selector
    [docs]。
    $(\'#pagelet_pokes li:not(.showAll) a:last\')
    
    或使选择器对ѭ7有效(可能在内部使用):
    $(\'#pagelet_pokes li:not(.showAll) a\').last()
    
    编辑: 我不能从问题中完全看出来,但是如果要排除的最后一个
    li
    始终存在,那么我倾向于使选择器保持简单,并对结果使用
    slice()
    [docs]方法:
    $(\'#pagelet_pokes li a\').slice(0,-1);
    
        
  • 相关问答

    错误1:Request method ‘DELETE‘ not supported 错误还原:...
    错误1:启动docker镜像时报错:Error response from daemon:...
    错误1:private field ‘xxx‘ is never assigned 按Alt...
    报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...