3 Stimmen

Verwenden Sie jQuery, um eine <tr> zu finden, die nach einer Zeile mit einem bestimmten Attribut darin liegt.

Ich weiß nicht, ob der Titel dieses Beitrags Sinn macht, aber hier ist eine Beispiel, mit dem ich arbeite:

        Bearbeiten

        CLASS1234
        Klassenbeschreibung

            Keine Dokumente sind derzeit mit dieser Klasse verknüpft.

Ich muss die zweite Zeile entfernen, indem ich sie finde, indem ich das name-Attribut des ersten der vorherigen Zeile verwende. Der Pseudocode wäre etwas wie

$('.classRow a[name="' + classID + '"]').parent().parent().next().remove()

Ich weiß nicht, ob das ordnungsgemäße jQuery-Syntax ist (so wie es ist, funktioniert es nicht), aber hoffentlich verstehen Sie den Punkt: Der "Ausgangspunkt" des Selektors ist das name-Attribut des Tags und ich muss die folgende Zeile entfernen. Das name-Attribut des Tags ist das einzige eindeutige Attribut in einem bestimmten auf der Seite (nicht einschließlich der dritten und vierten s in dieser Zeile, aber Sie verstehen den Punkt).

Was ist ein ordnungsgemäß formatierter/syntaxierter jQuery-Selektor, um das zu tun?

6voto

Daniel Cassidy Punkte 23409

Wenn ich Ihre Frage richtig verstehe:

$('tr:has(a[name="33"]) + tr').remove();

Links zur entsprechenden JQuery-Dokumentation:

0 Stimmen

Danke, Daniel - das hat funktioniert, als ich das vor meinem $.ajax() Aufruf eingefügt habe - ich glaube, ich habe noch etwas anderes, das verhindert, dass es dort funktioniert, wo ich es brauche.

0voto

James Allardice Punkte 161987

Wenn ich deine Frage richtig verstanden habe, möchtest du etwas Ähnliches wie das hier:

$(".classRow a[name=" + className + "]").closest("tr").next().remove();

Siehe ein Beispiel-Fiddle hier.

0 Stimmen

Bitte übersetzen Sie dies unter Beibehaltung der gleichen HTML-Tags, falls vorhanden, von en nach de: Verwenden Sie einfache Anführungszeichen für das externe Umwickeln :D

0voto

ArtoAle Punkte 2928

Du kannst versuchen

$('.classRow a[name="' + classID + '"]').parents("tr").next().remove();

Wenn es nicht funktioniert, benachrichtigen Sie bitte die classID, um zu überprüfen, ob sie in Ordnung ist

0voto

Ihr Beispiel funktioniert, stellen Sie einfach sicher, dass classID festgelegt ist: funktionierendes Beispiel

0voto

Kon Punkte 26399

Das beantwortet Ihre Frage zwar nicht direkt, aber hier ist ein Ratschlag... Wenn Sie eine Tabelle haben, in der Klassen in jeder Zeile aufgelistet sind, macht es mehr Sinn, alles über jede einzelne Klasse in derselben Zeile zu platzieren. So gehört der Dokumentencontainer wirklich in die Klassenzeile, mit der die Dokumente verbunden sind.

Die Vorteile dabei sind:

  • Semantische Bedeutung und Zuordnung von Beziehungen
  • Viel einfachere Möglichkeit, übergeordnete/Geschwister-/Kind-Elemente zu referenzieren

Dann müssten Sie nur so etwas tun:

$('.classRow a[name="' + classID + '"]').parent('classRow').find('.classDocs').remove();

0 Stimmen

Wenn ich deinen Punkt verstehe, Kon, hatte ich es ursprünglich in Form einer verschachtelten Tabelle für die Dokumente der Klasse innerhalb der Klassenreihe. Das wurde zum Alptraum für jQuery (und PHP) (zumindest für diesen jQuery/PHP-Anfänger). Nach einer Umgestaltung des Codes, bei der jede Klasse und ihre zugehörigen Dokumente in separaten -Tags platziert wurden, wurde es für mich viel einfacher zu verwalten.

0 Stimmen

Jedem das Seine. Im Allgemeinen möchten Sie jedoch eine Struktur aufbauen, die sinnvoller ist. :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X