Ankündigung

Einklappen
Keine Ankündigung bisher.

Finden eines Child-Elements

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Finden eines Child-Elements

    Hallo,

    man verzeihe mir bitte gleich vorab meine Laienhafte Beschreibung.

    Ich suche nach einer Möglichkeit mir die Nummer (vielleicht nennt man das auch Index) des Child-Elements ausgeben zu lassen in dem ein radio-button angeklickt wurde.

    Es geht in dieser Frage nur um die Child-Elemente!

    Beispiel: (Achtung: der Code hat keine Richtigkeit soll nur aufzeigen um welches Problem es geht

    Code:
    <div id=box-1>
    <table>
    <tbody>
    <tr><td><input type=radio name=findemich></td><td><input type=text name=testname></td></tr> //den suche ich ich
    
    <tr><td>irgendwas</td></tr>
    <tr><td>irgendwas</td></tr>
    <tr><td>irgendwas</td></tr>
    </tbody>
    </table>
    </div>
    lasse ich mir hier mit
    $('#box-'+TypeId +' tbody tr' ).length;
    erhalte ich "4", also 4 child's

    würde ich jetzt mit
    Code:
    var week = $('#box-'+TypeId +' tbody tr' ).length - 3; //Punkt1
    var name = "testname";
                                 // Punkt1 //
    $("#box-"+TypeId+" tbody tr:nth-child("+week+") input[name='"+name+"']").prop('disabled', true);
    so würde im child-nr-1 das input-feld disabled.

    solange ich weiss in welcher Zeile bzw. in welchem Child der Radio angeklickt wurde, funktioniert das.
    Wenn ich jedoch nicht weiss in welchem Child-Element der radio angeklickt wurde, wie ermittle ich dann hier das Child?

    Nochmals: es geht nur um die Frage das richtige Child zu finden.
    Es hat seine Gründe wieso ich hier nicht mit eindeutigen ID's arbeiten kann um die Textfelder anzusprechen etc...
    Das ist mit den radios auch so...

    Ich kann das nur über die Childs machen!!

    Vielen dank für Eure Hilfe

    Grüße Jürgen

    hallo,

    ich glaub ich habs teilweise verstanden...

    ich habe jetzt alles verkürzt so das <tr class="week"> ist

    er zählt jetzt alle Zeilen
    zumindest die jenigen die class="week" sind

    um nun auf die Zeile zugreifen zu können also darin Manipulationen machen zu können was muss ich nun machen?

    da ich zwischen diesen <tr class="week> noch andere Zeilen haben die verschachtelte Tabellen haben hoffe ich das ich diese nicht berücksichtigen muss.
    Sonst müsste ich in den source-code des slider-plugins auch diese class-week eintragen

  • #2
    Verkürze die Pfade durch klassen.

    Code:
    $('#box .rows:nth-child(' + week +') .radio').prop('disabled'. true);
    So bleibst du auch bei krasseren Änderungen am Ball und musst nicht alle deine
    jQuery-Selektoren umbauen.

    Bedenke das :nth-child bei 1 anfängt zu zählen, :eq bei 0.
    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

    Kommentar


    • #3
      Hallo,

      erstmal Danke für die rasche Antwort.

      Das Problem bzw. mein Unverständnis beim Zählen der Childs ist,

      wenn ich es falsch angegangen wäre, dann wären alle falsch.
      (cih meine damit den Zugriff z.B. auf Child 1, 2 oder 3
      das geht ja alles solange gut, solange ich keine verschachtelte Tabelle hinzufüge.

      Selbst dann kann ich mir mit lenght, noch die korrekte Child-Anzahl ausgeben lassen.
      Da ich weiss das mein gesuchter Radio-Button jedoch an der Viert-letzten Stelle ist ziehe ich auch hier wieder 3 ab und sollte somit einen Treffer haben... das geht aber nicht mehr

      ich habe keinen Schimmer wieso und warum er dieses Child nicht findet.

      Mit,
      Verkürze die Pfade durch klassen.

      meinst Du damit
      $('#box .rows:nth-child

      hier rows?
      meine Zeile müsste dann wie folgt aussehen

      <tr class="rows"><td><input type=radio........></td></tr>

      oder?

      Grüße Jürgen

      ps.. aktuell sieht meine <tr> so aus

      <tr class="week-'.$week.'">

      das wäre ja auch kein Problem da ich week kenne und das dem jquery mitteilen kann

      Kommentar


      • #4
        Zitat von tr0y Beitrag anzeigen
        Verkürze die Pfade durch klassen.

        Code:
        $('#box .rows:nth-child(' + week +') .radio').prop('disabled'. true);
        .
        Hallo,

        ich wäre Dir sehr dankbar wenn Du mir noch ein wenig behilflich sein könntest da ich glaube das dies der richtige Weg ist.

        Habe nun alles reduziert.

        Ich habe nun jeder Zeile also jedem <tr> Tag class="week" hinzugefügt.
        (ist egal ich weiss es sollte eigentlich row sein, da week nicht wirklich dem bezeichnend ist)

        Er zählt alle sauber durch.

        Wie schon zuvor funktioniert es solange bis die verschachtelte Tabelle in eine Zeile geladen wird.
        Auch dieser Tabelle die weitere Zeilen hat, habe ich die class="week" eingefügt.
        Das bedeutet das auch dort die Zeilen sauber mitgezählt werden.

        Um das zu überprüfen lasse ich mir nun die Summe der zeilen ausgeben die class="week" enthalten und dann noch die Summe der child's mit lenght

        Beide bringen mir das gleiche Ergebnis.

        Wie gesagt, auch nachdem die verschachtelte tabelle geladen wurde erhalte ich das richtige Ergebnis nur klappt dann der Zugriff auf die Zeile nicht mehr...
        bis und inkl. dem Laden der verschachtelten Tabelle klappt es... danach nicht mehr

        ich spreche die Zeile dann so an
        Zu beachten wäre evtl. noch das
        box-"+TypeId
        in <div id="box-Typeid>
        steht
        (typeId wird dynamisch erzeugt über php... nicht wundern das hier nicht die korrekte Schreibweise verwende)

        Code:
        
        $( "#box-"+TypeId+" .week:nth-child("+week+") input[name*='"+on+"']" ).each(function() {
        							var name 		= $(this).attr("name");
        							$("#box-"+TypeId+" .week:nth-child("+week+") input[name='"+name+"']").prop('disabled', false);
        						});
        Kann es möglich sein...
        das jQuery die childs bei Zugriff über nth-child("+week+") nochmals anders zählt?

        Ich drehe mich da total im Kreis und weiss nicht wo ich noch ansetzen soll...

        Grüße Jürgen

        Kommentar

        Lädt...
        X