嗨,这是自动生成的代码:
<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之前的文章不存在,我需要一些链接
有任何帮助吗?感谢
答案 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();
}
}
上试试