我一直在撞墙试图让这项工作暂时搁置一段时间。我正在尝试将评论正文缩短为一行以进行简短的评论预览。我正在使用jquery .each函数遍历我的线程评论系统中的每个.cbody(注释体)并将其放在chead中的cshort div中。它应该工作,但我不能在顶行选择cshort类。非常感谢任何帮助。据我所知,我的jquery应该是这样的:
$('.cbody').each(function(Ind1){
var str = $(this).text();
$(this).parent().siblings('.chead').next('.cshort').html(str);
});
});
这是评论的HTML:
<ul>
<li>
<div id="23">
<a name="23">
</a>
<div class="chead">
<a href="#" class="unord">
<img src="images/plus.gif" border="0">
</a>
<a href="userinfo.php?user=muuuuuuuu">
<img src="include/avatar/n.jpg" border="0">
</a>
<span style="display: none;" class="uname">
usersname
</span>
,
<span class="cshort">
</span>
<span class="votes_up" id="votes_up23">
2
</span>
-
<span class="votes_down" id="votes_down23">
0
</span>
<span class="vote_buttons" id="vote_buttons23">
<a href="javascript:;" class="vote_up" id="23">
</a>
<a href="javascript:;" class="vote_down" id="23">
</a>
</span>
</div>
<div class="cbody">
<br>
The comment text funny lol
</div>
<a style="display: none;" href="#" class="reply" id="23">
Reply
</a>
<a style="display: none;" href="#21" class="cparent">
Parent
</a>
</div>
</li>
</ul>
答案 0 :(得分:4)
cbody的父母似乎没有兄弟姐妹,所以位
$(this).parent().siblings('.chead')
没有返回任何内容,你很可能想要
$(this).parent().find('.chead')
或
$(this).siblings('.chead')
要最直接地使用cshort,请使用
$(this).parent().find('.cshort')
编辑:
您的HTML层次结构如下所示:
ul
| li
| | div#23
| | | a
| | | div.chead
| | | div.cbody
| | | ...
$(this)
指的是cbody $(this).parent()
指的是div#23 $(this).parent().siblings()
返回li
的所有其他子节点(示例代码中为空)$(this).siblings()
指的是div.chead和一些a
元素因为chead是cbody的兄弟,所以选择它的最好方法是
$(this).siblings('.chead')
答案 1 :(得分:1)
尝试更改此内容:
$(this).parent().siblings('.chead').next('.cshort').html(str);
到此:
$(this).siblings('.chead').children('.cshort').html(str);
.chead
和.cbody
是兄弟姐妹,因此您无需查看.cbody
的父级。此外,.cshort
是.chead
的孩子,因此您可以查看.chead
的孩子,而不是其兄弟姐妹(通过.next
)。
答案 2 :(得分:0)
不应该追加最后一个方法吗?
.html(str)每次都会替换它,你最终只会得到最后一个。