jquery closest('li').find('a').text() Problem

  • Hi zusammen,


    ich habe den folgenden Code:


    und möchte mir nun gerne den Text des Links ausgeben lassen ("Stunden"), ohne dem Link eine ID zu verpassen (weil das in dem Fall nicht geht).


    Mein folgender Versuch

    Code
    console.log("FILTER:'" + $('#filter_stunden').closest("li").find("a").text() + "': " + $("option:selected", $('#filter_stunden')).text() );

    erzeugt diese Ausgabe:


    FILTER:'StundenAllesStunden komplett verbrauchtStunden überschrittenStunden überschritten (Projekte ohne Stundenlimit ausschließen)Stundenlimit nicht überschrittenBereits Stunden gebucht': Alles


    Ich hätte aber nun das hier erwartet:

    Filter:'Stunden':Alles


    Was mache ich falsch X/||


    Bin für jeden Tipp dankbar.


    Grüßle

    Daniel

  • Der Code, den Du gepostet hast, bringt bei mir auch nur die Ausgabe, die Du erwartest:

    https://jsfiddle.net/Sempervivum/gd4tp1yz/1/

    Dass Du eine so lange Ausgabe bekommst, könnte daran liegen, dass Du noch mehr selektierte Optionen auf deiner Seite hast. Mir ist außerdem nicht ganz klar, was Du mit dem zweiten Teil der Ausgabe vor hast: option:selectedspricht alle selektierten Optionen auf der Seite an. Hattest Du u. U. diese vor $("#filter_stunden option:selected").text()); ? Das würde nur die Texte der Optionen ausgeben, die Kindelement von #filter_stunden sind.

    https://jsfiddle.net/Sempervivum/gd4tp1yz/4/


  • Hi,

    im tatsächlichen Script (das ich für dieses Beispiel vereinfachen wollte) habe ich mehrere Selectboxen, die alle eine ID mit dem Präfix "filter_" haben.


    Die Selectoboxen befinden sich alle in so einer Verschachtelung

    Code
    <li class="list-group-item">
        <a href="javascript:;" onclick="toggle_div('stunden');">BESCHRIFTUNG DER SELECTBOX</a>              
        <div id='stunden' style='display:none;' class="filter_div">                
            [HIER STEHT DIE SELECTBOX MIT ID "filter_"+irgendwas]   
        </div>         
    </li>


    Im Javascript will ich dann für alle Selectboxen den Text, der oben mit dem Platzhalter BESCHRIFTUNG DER SELECTBOX angegeben ist, ausgeben.

    Aber nur, für selectboxen, bei denen auch was ausgewählt ist.


    Hier ist mein Versuch, der aber eben nicht korrekt funktioniert:

    Code
    $('[id^=filter_]').each(function( index ) {
        if ($("option:selected", this).text() !="") {
            console.log("FILTER:'" + $(this).closest("li").find("a").text() + "': " + $("option:selected", this).text() );
        }
    });

    Ich hoffe, dadurch wirds ein bisschen klarer...


    Danke schon mal für eure Hilfe.


    Viele Grüße


    Daniel

  • Ich bin immer noch der Meinung, dass dieses:

    $("option:selected", this).text()

    den Text aller Selectboxen auf deiner Seite ausgibt und dass Du statt dessen dieses

    + $(this).find("option:selected").text()

    verwenden müsstest.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!