使用jquery选择类时出现问题

时间:2009-03-28 15:32:21

标签: jquery multithreading comments css-selectors each

我一直在撞墙试图让这项工作暂时搁置一段时间。我正在尝试将评论正文缩短为一行以进行简短的评论预览。我正在使用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>
&nbsp;,

<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>

3 个答案:

答案 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)每次都会替换它,你最终只会得到最后一个。