2011-07-25 154 views
3

中的.next()元素这是我有:选择具有特定属性的JQUERY

$("#comment").next().attr('shown',0).fadeIn(); 

我想显示下是隐藏页面上的评论。然而,我试图一次显示两条评论,所以如果你点击第一条,第二条就是下一条。所以我给出了显示的属性。我想选择具有shown=0属性的下一个。上述不起作用。我相信这将是next(tr[shown=0]),但我不能得到那个工作(我在表中寻找下一行)

任何帮助表示赞赏!

+0

这可能是因为“显示”是不是在HTML默认属性?改为使用ID,班级或名称。 – Warface

回答

9

next只能返回紧邻的下一个兄弟。

你可以叫nextAll,它返回所有后续的兄弟姐妹,与:first选择来获得的第一个匹配一个:

$(...).nextAll("tr[shown=0]:first") 
0

SLaks回答会的工作,但我不会用你的HTML作为自定义属性考虑它可能会混淆下一个开发者。像这样的不使用自定义属性:

<style> 
.hidden { 
    display:none; 
} 
</style> 

<script> 
$(document).ready(function(){ 
    $('.showmore').click(function(){ 
     $(this).parent().nextAll(':hidden:first').removeClass('hidden'); 
    }) 
}); 
</script> 

<div id="comments"> 
<div class="comment" id="comment1"> 
    Test comment   
    <a href="#" class="showmore">Show More</a> 
</div> 
<div class="comment" id="comment2"> 
    2nd test comment 
    <a href="#" class="showmore">Show More</a> 
</div> 
<div class="comment hidden" id="comment3"> 
    3rd test comment 
</div> 
<div class="comment hidden" id="comment4"> 
    4th test comment 
</div> 
</div> 

Demo

0

我知道这是一个古老的职位,但只是标题的第一个答案把我摔下去。然而@SLaks的答案正是我个人正在寻找并解决我的问题。

这实际上帮助我在完全不同的情况下发生了很多事情,而恰巧发现了这篇文章。这个答案是他回复中提到的最好的答案。

我遇到的问题类似于下面的内容,为了得到下一个具有类似属性名称但不同值的特定属性。

<div class="blah" data-field="sometext" data-index="0"></div> 
<div class="bar"></div> 
<div class="blah" data-field="sometext" data-index="1"></div> 


$("div[data-field='sometext'][data-index='0']") 
    .nextAll("div[data-field='sometext']:first"); 

以上返回

<div class="blah" data-field="sometext" data-index="1"></div> 

希望这可以帮助其他人,因为它帮了我很大的