Pregunta

He estado golpeando mi cabeza contra una pared que intenta hacer este trabajo desde hace un tiempo. Estoy tratando de acortar el cuerpo de comentario a una línea de comentario compacta de vista previa. Estoy usando jQuery .Cada función para pasar por cada .cbody (cuerpo comentario) en mi sistema de comentarios roscado y colocarlo en el div CShort dentro chead. Se debe trabajar, pero no puedo seleccionar la clase CShort en la línea superior. Se agradece mucho cualquier ayuda. Por lo que yo puedo ver a mi jQuery debe ser la siguiente:

$('.cbody').each(function(Ind1){
         var str = $(this).text();
         $(this).parent().siblings('.chead').next('.cshort').html(str); 
    });
});

Este es el código HTML para el comentario:

<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>
¿Fue útil?

Solución

padre del cbody parece no tener hermanos, por lo que el bit

$(this).parent().siblings('.chead')

no devuelve nada, lo más probable es que desee, ya sea

$(this).parent().find('.chead')

o

$(this).siblings('.chead')

Para obtener más directamente a la CShort, utilice

$(this).parent().find('.cshort')

Editar:

Su jerarquía de HTML es el siguiente:

ul
| li
| | div#23
| | | a
| | | div.chead
| | | div.cbody
| | | ...
  • $(this) se refiere a la cbody
  • $(this).parent() refiere a DIV # 23
  • $(this).parent().siblings() devuelve todos los otros nodos secundarios del li (vacíos en el caso de su código de ejemplo)
  • $(this).siblings() refiere a div.chead, y unos elementos de pocos a

desde chead es un hermano de cbody, la mejor manera de seleccionar es con

$(this).siblings('.chead')

Otros consejos

Trate de cambiar esto:

$(this).parent().siblings('.chead').next('.cshort').html(str);

a esto:

$(this).siblings('.chead').children('.cshort').html(str);

.chead y .cbody son hermanos, por lo que no tiene que mirar a los padres del .cbody. Además, .cshort es un hijo de .chead, por lo que mirar a través de los hijos de .chead, no a sus hermanos (a través de .next).

No debe anexar ese último método?

.html (str) va a sustituir cada vez, y sólo va a terminar con el último.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top