如何使用jquery删除不存在id以上特定类的元素

时间:2011-12-02 08:45:16

标签: jquery css

嗨,这是自动生成的代码:

<div class="divider"></div>
<article class="link"></article>
<div class="divider"></div>
<article></article>
<div class="divider"></div>
<article></article>
<div class="divider"></div>

现在我不想看第一个分隔符,所以$("divider").first().css("display", "none");工作正常。

但是,任何包含“link”类的文章都必须隐藏$("link").first().css("display", "none");

这使第二个分隔符扮演第一个分隔符的角色,所以我也需要隐藏它。我不能说隐藏第二个分频器的情况并非总是如此。它甚至可能是

<div class="divider"></div>
<article class="link"></article>
<div class="divider"></div>
<article class="link"></article>
<div class="divider"></div>
<article class="link"></article>

在这种情况下,我需要隐藏所有分隔线。

如果.divider之前的文章不存在,我需要一些链接

有任何帮助吗?感谢

4 个答案:

答案 0 :(得分:1)

我首先使用

隐藏所有.link s
$('article.link').hide()

然后隐藏.divider之前的所有.article(以这种方式,你将不会一个接一个地看到两个.divider

.prev('.divider').hide();

最后我会隐藏第一个.divider

$('.whatever-container-you-have > .divider:first-child').hide();

一起包裹它变成:

$('article.link').hide().prev('.divider').hide();
$('.whatever-container-you-have > .divider:first-child').hide();

应该符合你的需要。

答案 1 :(得分:0)

只需获取所有包含链接类的文章,隐藏它们并隐藏以前的兄弟姐妹,然后就完成了,例如:

  $('article.link').hide().prev('.divider').hide();

答案 2 :(得分:0)

我会这样做:

$('article.link').each(function(){
    var $this = $(this);
    if($this.text() === ""){//if the article is empty
         $this.hide();//hide it
         //Hide the previous element if it has the class divider
         $this.prev('.divider').hide();        }
});

答案 3 :(得分:0)

这很好用,我在js小提琴上测试过它

HTML标记

<div class="container">
    <div class="divider"></div>
    <article class="link"></article>
    <div class="divider"></div>
    <article></article>
    <div class="divider"></div>
    <article></article>
    <div class="divider"></div>
</div>

JS代码

$(document).ready(function(){

    $('article.link').hide();
      deleteDividerDiv();

});

function deleteDividerDiv() {


    var firstDiv = $("div.container").children(":visible").first();

    if($(firstDiv).is("article")) {
        return;     
    } else if($(firstDiv).is("div") && $(firstDiv).hasClass('divider')) {
       $(firstDiv).hide();
       deleteDividerDiv();
    } 

}

JS Fiddle

上试试