jquery
  • variables
  • filter
  • find
  • 2015-07-04 14 views 5 likes 
    5

    Ich habe eine Variable, die einfache HTML enthält wie das folgende Beispiel sucht - der Inhalt der Variable wird dynamisch über Ajax generiert:jQuery: Wie Text von bestimmtem Elemente in Variablen extrahieren

    var errors = "<span id='id1'>Value 1</span><span id='id2'>Value 2</span><span id='id3'>Value 3</span><span id='id4'>Value 4</span><span id='id5'>Value 5</span>"; 
    

    Wie kann ich Holen Sie den Text eines bestimmten Elements durch seine ID innerhalb dieser Variablen, z der Text der Spanne mit ID = 'id3'? Hier sollte das Ergebnis "Value 3" sein.

    ich folgendes versucht, aber das Ergebnis, das ich bekommen, ist immer entweder ein leerer String oder "[object Object]":

    1. $(errors).filter('#id3')
    2. $(errors).filter('#id3').text()
    3. $(errors).find('#id3').text()

    Update:
    Nachdem ich die Kommentare und Antworten gelesen habe, habe ich meinen Code geteilt und es scheint, dass das Problem mit dem Erfolgsteil von Ajax ist, wo data enthält, was ich im obigen Beispiel gezeigt habe, aber es scheint nicht in der Variable gespeichert zu werden "errors". (Wenn ich die Variable fest codiere, funktioniert sie mit .filter.)

    var errors = ''; 
    $.ajax({   
        type: "post", 
        url: "ajax.php", 
        cache: "false", 
        data: { 
         node: 'fetchErrors', 
         selectedLang: selectedLang 
        }, 
        success: function(data){ 
         errors = data; 
        } 
    }); 
    

    Kann mir jemand dabei helfen?

    Vielen Dank im Voraus, Mike

    +3

    Ich versuchte Ihr 2. ans ($ (Fehler). Filter ('# ID3'). Text()) in Firefox gut funktioniert. –

    +1

    stimmen mit @JohnDaniel überein ... funktioniert gut in Chrom. – manta

    +0

    @JohnDaniel: Danke dafür. Ich kann das jetzt auch bestätigen und habe gerade ein Update für meinen Beitrag gemacht. – keewee279

    Antwort

    2

    Dies funktioniert für mich().

    +0

    Danke. Ich werde das akzeptieren, da es mich in die richtige Richtung weist. Mein Problem war jedoch mit dem Ajax, da jQuery vor dem Ajax-Ergebnis weitergezogen wurde, also wurde alles innerhalb des Erfolgsteils verschoben, und es funktioniert dann gut. – keewee279

    +0

    @keewee Ja Ajax ist '' 'asynchronous''' was bedeutet, dass die Funktion beendet wird, bevor die Ergebnisse (' '' data''' in Ihrem Fall) vom Server kommen. – dee

    4

    Sie auf dem richtigen Weg waren ...

    var errors = "<span id='id1'>Value 1</span><span id='id2'>Value 2</span><span id='id3'>Value 3</span><span id='id4'>Value 4</span><span id='id5'>Value 5</span>"; 
    var obj = $(errors); 
    var filter = $(obj).filter('#id3'); 
    console.log(filter.text()); 
    

    jsfiddle: fiddle

    +0

    Vielen Dank! Ich habe das versucht, aber es gibt auch eine leere Saite für mich zurück. – keewee279

    +0

    Update: Danke für das Hinzufügen der Geige. Ich kann bestätigen, dass dies auch für mich funktioniert und habe gerade eine Aktualisierung meines Posts vorgenommen. – keewee279

    1

    Dies hat den Zweck erfüllt:

    $(errors).filter("#id3").text() 
    
    +0

    Danke. Ich hatte das versucht (siehe oben), aber in meinem Fall hat es nicht funktioniert. – keewee279

    2

    Versuchen Sie async: false zu Ajax Eigenschaften hinzuzufügen.

    +0

    Danke - können Sie erklären, was das tun soll? – keewee279

    Verwandte Themen