Juergen: $( document ).ready(function() suchen und auslesen einer id

Hallo,

bräuchte nochmal kurz Eure Hilfe bitte.

ich möchte nach dem laden einer Seite eine Klasse mit dem Wert "in active" suchen und dort den Inhalt der id (id="box-7-1) "auslesen. irgendwie scheint er zwar mit if ($( document ).find("in active")){ die Klasse zu finden aber leider jedoch den Wett von id nicht

Grüße Jürgen

<li class="in active" id="box-7-1">
$( document ).ready(function() {

          if ($( document ).find("in active")){
	  var test = $( document ).find('li.in active').attr('id');
          // var test = $(this).attr('id');
		console.log( "gefunden ===> "+test );
		
	}else{
		console.log( "nicht gefunden" );
	}
});
  1. @@Juergen

    eine Klasse mit dem Wert "in active" suchen

    Sowas gibt es nicht. Klassenbezeichner dürfen keine Leerzeichen enthalten.

    <li class="in active" id="box-7-1">
    

    Dieses Element gehört zwei Klassen an: "in" und "active".

    irgendwie scheint er zwar mit if ($( document ).find("in active")){ die Klasse zu finden

    Das glaube ich nicht. Zum einen siehe oben; zum anderen selektierst du keine Klassen, sondern Elementtypen. in-Elemente und active-Elemente dürften aber kaum welche zu finden sein.

    LLAP 🖖

    --
    “You might believe there are benefits for the developer, but first of all, you should put those behind the interest of the user.” —Stefan Tilkov
    Selfcode: sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|
    1. ok du hast natürlich recht mit den zwei Klassen

      es ist jedoch so das mit

      if ($( document ).find("in active")){
      alert('gefunden');
      }else{
      alert('nicht gefunden');
      }
      

      oder

      if ($( document ).find("active")){
      alert('gefunden');
      }else{
      alert('nicht gefunden');
      }
      

      "gefunden" ausgegeben wird

      gut ich habe das aber in

      if ($( document ).find("active")){
      

      dennoch komme ich noch nicht drauf wie ich den Wert von der id im element li mit der class"active" auslesen kann

      habe schon unzählige Dinge geändert ... komm einfach nicht drauf ich muss ja nicht nur li suchen sondern ein bestimmtes actives li

      Grüße Jürgen

      1. Hallo Juergen,

        es ist jedoch so das mit

        if ($( document ).find("in active")){
        alert('gefunden');
        }else{
        alert('nicht gefunden');
        }
        

        "gefunden" ausgegeben wird

        Ja, JQuery liefert immer ein Ergebnis. Aber nicht immer Elemente.

        console.log($( document ).find("bla laber"))

        dennoch komme ich noch nicht drauf wie ich den Wert von der id im element li mit der class"active" auslesen kann

        Warum meinst du diesen Wert zu brauchen?

        document.querySelectorAll("li.active")[0].getAttribute('id'); sollte genau das leisten, falls es nur genau ein li-Element mit dieser Klasse gibt. Ohne JQuery. Aber ich habe den Verdacht, du brauchst gar kein JavaScript.

        Bis demnächst
        Matthias

        --
        Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
        1. Hallo Matthias

          document.querySelectorAll("li.active")[0].getAttribute('id'); sollte genau das leisten, falls es nur genau ein li-Element mit dieser Klasse gibt. Ohne JQuery. Aber ich habe den Verdacht, du brauchst gar kein JavaScript.

          Warum querySelectorAll verwenden wenn man nur ein Element möchte? Und getAttribute braucht es auch nicht, da die id eines Elements auch direkt über die gleichnamige DOM-Eigenschaft gelesen werden kann.

          var id = document.querySelector('li.active').id;
          

          Viele Grüße,

          Orlok

          1. Hallo Orlok,

            var id = document.querySelector('li.active').id;
            

            Danke für die Hinweise.

            Bis demnächst
            Matthias

            --
            Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
            1. Hallo Orlok,

              var id = document.querySelector('li.active').id;
              

              Danke für die Hinweise.

              Bis demnächst
              Matthias

              shit,

              da ich verschachtelte Regsiterkarten habe

              habe ich ja eine aktive Mutter-li und eine Tochter-li

              kann ich irgendwie die zweite aktive li suchen?

              Grüße Jürgen

              1. Hallo Juergen,

                Ja.

                Bis demnächst
                Matthias

                --
                Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
        2. document.querySelectorAll("li.active")[0].getAttribute('id'); sollte genau das leisten, falls es nur genau ein li-Element mit dieser Klasse gibt. Ohne JQuery. Aber ich habe den Verdacht, du brauchst gar kein JavaScript.

          Hallo erstmal ein Dankeschön für die Antworten und Hiilfe

          Doch ich brauche den Wert der ID wieso? Ich erstelle eine Seite mit php die dynamisch aufgebaut wird ich benutze auf dieser Seite verschachtelte Registerkarten. In diese Registerkarten lade ich via ajax bei onclick bestimmte Tabellen

          Wenn ich die Seite das erste mal aufrufe ist eine bestimmte verschachtelte-Registerkarte aktiv Diese hat dann ein mit einer mir nicht bekannten id <div id=box-7-1></div>

          Ich wollte nun nach dem erstmaligen Aufruf der Seite via jquery herausfinden welche Regsiterkarte <li> nun aktiv ist und aus dieser die zugehörige <div> box auslesen damit ich dann diese DIV Box mit ajax füllen kann

          Klar könnte ich das auch mit php beim Laden der Seite schon erledigen... habe aber das ganze anders aufgebaut und möchte es nicht nochmal ändern

          Grüße Jürgen

          1. Du wirst doch sicher sowas haben wie ein <ul> für die Hauptnavigation und ein <ul> für die Subnavigation. Gib den beiden ul unterschiedliche Klassen und dann kannst Du gezielt suchen

            var mainActive = $("ul.navMain li.active").attr(id),
                subActive =  $("ul.navSub li.avtive").attr(id)
            

            und du hast die IDs der aktiven Tabs für Haupt- und Subnavigation. Wobei ich nicht weiß was attr() zurückgibt wenn es auf einem leeren Set aufgerufen wird (sprich: keine Subnavigation existiert oder kein li mit active Klasse da ist).

            Hilft das ?

            Gruß Rolf

            1. Du wirst doch sicher sowas haben wie ein <ul> für die Hauptnavigation und ein <ul> für die Subnavigation. Gib den beiden ul unterschiedliche Klassen und dann kannst Du gezielt suchen

              var mainActive = $("ul.navMain li.active").attr(id),
                  subActive =  $("ul.navSub li.avtive").attr(id)
              

              und du hast die IDs der aktiven Tabs für Haupt- und Subnavigation. Wobei ich nicht weiß was attr() zurückgibt wenn es auf einem leeren Set aufgerufen wird (sprich: keine Subnavigation existiert oder kein li mit active Klasse da ist).

              Hilft das ?

              Gruß Rolf0

              Hi Rolf

              klar, das hilft bestimmt sehr

              Guck jetzt noch Fußball und teste es dann gleich das sieht mir aber sehr logisch aus... das klappt dann bestimmt

              Grüße und Danke Jürgen

              1. Du wirst doch sicher sowas haben wie ein <ul> für die Hauptnavigation und ein <ul> für die Subnavigation. Gib den beiden ul unterschiedliche Klassen und dann kannst Du gezielt suchen

                var mainActive = $("ul.navMain li.active").attr(id),
                    subActive =  $("ul.navSub li.avtive").attr(id)
                

                und du hast die IDs der aktiven Tabs für Haupt- und Subnavigation. Wobei ich nicht weiß was attr() zurückgibt wenn es auf einem leeren Set aufgerufen wird (sprich: keine Subnavigation existiert oder kein li mit active Klasse da ist).

                Hilft das ?

                Gruß Rolf0

                habe jetzt

                $( document ).ready(function() {
                    console.log( "ready!" );
                	//var id = document.querySelector('li.active').id;
                	//var id = $("ul.navSub li.active").attr(id);
                	var id = $("ul.navSub li.active").attr(id);
                	console.log( "active id ===>"+id );
                });
                

                probiert. natürlich habe ich der Mutter-UL und den Tochter-UL's <ul> die Klassen navMain und navSub zugewiesen

                jetzt bringt er jedoch

                jquery-migrate-1.2.1.min.js:2 Uncaught TypeError: Cannot read property 'toLowerCase' of undefined

                ich glaube aber doch das dies der nun richtige Weg ist mit den zwei Klassen

                Grüße Jürgen

                nur was hat das nun mit dem Fehler auf sich?

                hat sich erledigt

                mit

                var id = $("ul.navSub li.active").attr('id');
                

                ging es die '' hatten gefehlt

                Danke nochmal