2009-03-28 16 views
0

Ich habe meinen Kopf gegen eine Wand schlug versuchen, dies für eine Weile zu arbeiten. Ich versuche, den Kommentarkörper für eine kompakte Kommentarvorschau auf eine Zeile zu verkürzen. Ich benutze jquery .Each-Funktion, um jeden .cbody (Kommentarkörper) in meinem Thread-Kommentar-System zu durchlaufen und es in das cshort div inside chead einzufügen. Es sollte funktionieren, aber ich kann die Cshort-Klasse in der obersten Zeile nicht auswählen. Jede Hilfe wird sehr geschätzt. Soweit ich meine Jquery sehen kann, sollte dies sein:Problem bei der Auswahl der Klasse mit Hilfe von jquery

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

Dies ist der HTML-Code für den Kommentar:

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

Antwort

4

der Eltern cbody scheint keine Geschwister zu haben, so wird das Bit

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

ist nichts zurückkehrt, werden Sie wahrscheinlich wollen entweder

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

oder

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

am unmittelbarsten auf die CShort zu erhalten, verwenden

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

Edit:

Hierarchie sieht Ihre HTML ist wie folgt aus:

ul 
| li 
| | div#23 
| | | a 
| | | div.chead 
| | | div.cbody 
| | | ... 
  • # 23
  • $(this).parent().siblings() gibt alle anderen untergeordneten Knoten des li (leer in Ihrem Beispielcode Fall)
  • $(this).siblings() bezieht sich auf div div.chead, und ein paar a Elementebezieht sich auf die cbody
  • $(this).parent() bezieht sich

seit chead ein Geschwister von cbody ist, zu wählen die beste Art und Weise ist es mit

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

Vielen Dank, das hat es sortiert. Könntest du erklären, warum der cbody Elternteil keine Geschwister hat? Ist chead nicht ein Geschwister? – Joe

1

Versuchen Sie, diese zu ändern:

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

dazu:

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

.chead und .cbody sind Geschwister, so dass Sie aussehen müssen Eltern nicht zu .cbody ‚s. Auch .cshort ist ein Kind von .chead, so dass Sie durch .chead Kinder schauen, nicht bei seinen Geschwistern (über .next).

+0

Danke, deine Methode funktioniert auch, ich gab Cobb die richtige Antwort, da er etwas schneller war. – Joe

0

Sollte nicht die letzte Methode anhängen?

.html (str) wird es jedes Mal ersetzen, und Sie werden nur mit dem letzten enden.

Verwandte Themen