[jQuery] Durch alle Klassen vor aktueller Klasse iterieren?

04/22/2015 03:00 GeKiller#1
Ich würde gerne durch alle Klassen nach der aktuellen Klasse iterieren und zwar um eine Zahl zu ändern. Es geht dabei konkret um die Kommentarnummer. Wenn ein Kommentar gelöscht wird, dann lösche ich dies bei aktiviertem js mit einem ajax request und entferne dieses dann ja mit .remove und einer kleinen Animation.

Danach müssen dann aber auch alle nach diesem Kommentar enthaltenen Kommentarnummern geändert werden. Wie kann ich also durch alle Klassen nach diesem Kommentar iterieren?

Code:
$(".comment-head").each(function() {
    for (i = 0; i < ?; i++) { 
        $(this).text().replace(i, '(i -1)) 
    }
});​
Ja, so in etwa würde man das ja dann für jede Klasse machen, wobei ich auch dann mit der Bedingung keine Ahnung habe. Man müsste dann ja von dem aktuellen Kommentar (oder dem zu löschendem Komemntar) ausgehen und dann dementsprechend alle Zahlen um eins verringern, also bei den darauf folgenden Kommentaren.

Wie kriege ich aber die Bedingung, also den ersten Wert , wenn ich bspw. Kommentar nummer 4 lösche und wie iteriere ich dann durch alle darauf folgenden Klassen und ändere dann den Wert? In diesem div befinden sich auch noch andere Zahlen, also muss ich darauf auch achten.
Wenn ich es mit
Code:
$test = $this.closest('.comment-head').text();
alert($test);
versuche, dann kriege ich leider eine leere Ausgabe. Daraus müsste man dann ja aber auch noch die Nummer filtern ...

$this is dabei ja die Form und von da aus geht er ja dann normalerweise mit closest nach oben, also zum Kopf des Kommentars aber irgendwie funktioniert das so ja anscheinend nicht.

Achja: Ich befinde mich übrigens zu dem Zeitpunkt immer noch im ajax request aber das sollte ja auch klar sein oder? Ansonsten müsste ich ja dann doch noch die Seite neuladen. ;)
04/22/2015 03:31 Shawak#2
Kannst du mal deinen HTML Code posten?
04/22/2015 04:27 GeKiller#3
Ich habe es jetzt übrigens auch hingekriegt, die Nummer auszulesen. Das mit der leeren Ausgabe lag daran, das sich die form ($this) in einem div befand und über diesem div war dann erst der "comment-head".

Code:
$headContent = $this.closest('.comment').find('.comment-head').text();
$commentNumber = $headContent.split('|')[0].replace("#", "").replace(/ /g,'');
So funktioniert das dann auch und das sollte ja dann auch alle unnötigen Zeichen entfernen aber wie gehe ich jetzt von da an alle Kommentare nach unten durch, bzw. alle "comment-head(s)"?

So sieht die HTML Datei aus aber ich habe jetzt einmal die ganzen Infos etc. entfernt.
HTML Code:
<div class="comment">
    <div class="comment-head">
    <!-- Hier sind die ganzen Infos-->
    </div>
    <div class="comment-content">
        <form action="comments.php" class="test" method="post">
            <div class="comment-options">
                <input type="submit" value="Bearbeiten" name="edit">
                <input type="submit" value="Löschen" onclick="return confirm('Möchten Sie diesen Kommentar wirklich löschen?');" name="delete">
            </div>
        </form>
    </div>
</div>
04/25/2015 17:37 RecK#4
[Only registered and activated users can see links. Click Here To Register...]

Für die Kommentar-IDs würde ich dir HTML5 data- Attribute "ans Herz legen"
data-comment="commentID"
Auslesen -> element.attr('data-comment');
Setzen -> element.attr('data-comment', commentID);

lg