JQuery Problem...

SonMiko

Erfahrenes Mitglied
Hallo zusammen,

schade dass es hier kein gesondertes JQuery Unterforum gibt - aber ok, vielleicht gäbs nicht genug Nutzer dafür. Ich hoffe trotzdem jemand kann mir helfen :D...

Mein Problem ist folgendermaßen zu beschreiben:
Ich gebe in einer Tabelle Daten aus, die ich aus einer Datenbank erhalte.
Irgendwo in der Tabelle findet sich ein Bild (<img...) mit einem Link.
Was jetzt kommt ist vielleicht bissel stumpfsinnig, aber ich wusste noch nicht so recht weiter: Ich habe dem Link eine Klasse gegeben um beim anklicken in JQuery darauf reagieren zu können.

Mein Ziel ist es das Icon anzuklicken, dann soll die gesamte Reihe (tr) verschwinden.
Da es ein Löschvorgang werden soll, will ich das Event nicht durch klick auf die Reihe auslösen, sondern eben durch das Icon - und es soll auch nur die entsprechende Reihe verschwinden.

Wie greife ich also vom jeweiligen Element this auf den Vorfahren tr zu?

Mein billiger Ansatz dazu:
Code:
$(document).ready(function() {
    $(".delete").click(function(){
        $("tr >"+this).hide(500);
        
    })
});

Generell hab ich noch nicht ganz verstanden wie ich am besten gezielt Elemente anspreche die dynamisch erzeugt wurden und mehrfach vorkommen (keine IDs) - und zwar einzeln.
Vermutlich würde mein obiger Ansatz selbst wenn er laufen würde alle Klassen des typs delete betreffen und die dazugehörige Vorfahren Reihe verschwinden lassen, oder?
Oder bezieht es sich in dem Fall nur auf das jeweilige Objekt das angeklickt wurde (das wäre natürlich klasse :D )?

Ich bin es leider noch gewohnt mit aufrufen im Tag a la onclick="meineFunktion()" Funktionen aufzurufen - es wird aber behauptet dieses Vorgehen seie eher kontraproduktiv...

Ich würde mich echt wahnsinnig über Hilfe freuen und bin gespannt auf Feedbacl von den JQuery-Mastern unter Euch...

Besten Gruß,

Mike
 
Moin Mike,

probiers so ;)

Code:
$(this).parentsUntil('tr').parent().hide(500);
$(this) ist das Icon
parentsUntil('tr') der Höchste Vorfahr davon, aber ein Nachfahr der <tr>(also die Zelle)
parent() davon wiederum das Elternelement(die <tr>)
 
Haha - soagr eine JQquery typische antwort: Ein Einzeiler, der keine Fragen offen lässt -
sehr schön - danke Dir******
 
Okay eine Frage dann doch noch:
Was tun wenn ich nun die folge Zeile darunter auch noch quitt werden möchte?
Mein Ansatz:
Code:
$(this).parentsUntil('tr').parent().nextSibling().hide(500);

UPDATE:
Okay ich habs:
Code:
$(this).parentsUntil('tr').parent().next().hide(500);

Dachte ich müsste das nächste Geschwisterelement ansprechen...

-> Die Frage ist nun, wie kann ich eine ID oder einen Fixwert einem Tag oder einem Element mit geben um später gezielt beispielsweise einen Datenbankwert wieder zu finden? Wie kann ich diesen JQuery mit auf den Weg geben? Gehen wir einfach mal von einem Value oder so aus.
 
Zuletzt bearbeitet:
Du kannst, wenn du benachbarte Elemente Löschen willst ja auch in der JS-funktion addieren. Angenommen du möchtest das Element rechts neben dem Element löschen, von welchem du die ID hast. Du könntest nun alle Elemente fortlaufend durchnummerieren, also das erste heißt Item1, das daneben Item2 und daneben dann Item3. Wenn du das Element neben Item1, von welchem du zB. die ID hast löschen willst, dann übergibst du einfach nur die Zahl und setzt in der funktion den Namen zusammen also zb:
<js>var neue_id = var_uebergebene_id + 1;
var zielelement = "item" + neue_id; </js>
 
Hi -
nein das würde nicht funktionieren, die Elemente haben IDs die sich in der Datenbank wiederfinden, diese sind jedoch nicht fortlaufend - es kann also sein dass das Ergebnis 1,8,15,16 etc. ist...
Die Frage ist also - wie gebe ich IDs oder Werte mit?
 
Hi,

vielleicht hilft dir die Methode attr weiter:
Code:
$(elem).attr({
  db_val1: var1,
  db_val2: var2,
  // ...
  db_valn: varn
});
Ciao
Quaese
 
Hi,

ja hat sie :D bin auch grad dabei - habs ein wenig anders gemacht: Ich habe einem Element ein "rel" Attribut mit dem jeweiligen Wert zugeteilt. Das klappt sehr gut.

Danke :)
 
Zurück