0

Ich integriere eine Live-Chat-Funktion und versuche eine JQuery-Anweisung zu verwenden, um die Chat-Sitzungs-ID von einer Div-ID abzurufen, die erst erstellt wird, wenn ein Chat gestartet wird. (Es wird dynamisch zur Seite hinzugefügt.) Natürlich stelle ich sicher, dass ich nicht versuche, das Element auszuwählen, bevor ein Chat gestartet wurde und existiert. Hier ist die relevante HTML-Struktur und die Codezeile, die ich verwende:JQuery .Kinder() nicht dynamisch hinzugefügte Elemente zurückgeben?

HTML:

<!--These do not exist until a chat is started--> 
    <div class="customer_inner_widget"> 
     <div id="chat-session-5748220" style="height:100%;"> 

JQuery:

$(".customer_inner_widget").children().first().attr("id").split("-")[2] 

Das Merkwürdigste ist, dass unter normalen Umständen entweder Wenn ich es nach dem Schließen des Chats in meinem Skript ausführe ODER ich es in der Google Chrome Developer Tools-Konsole ausführe, NACH dem Start eines Chats funktioniert es nicht:

Output: 
    Uncaught TypeError: Cannot read property 'split' of undefined 
     at <anonymous>:1:58 

... aber wenn es einfach direkt an den auf meiner Seite Chatfenster klicken und wählen Sie „inspiziert“, dann laufen die gleiche Codezeile in der Konsole ... es funktioniert:

Output: 
    "5748220" 

Wie prüft der HTML-Code in Chrome plötzlich, dass er funktioniert ...? Wie kann ich diese versteckte Magie in meinem Skript ausführen?

+1

Ihre ID hat keine schließenden doppelten Anführungszeichen, jQuery in diesem Kontext ist egal, wenn das Element erstellt wird –

+0

Mein schlechtes, das HTML ist korrekt Ich habe es nur manuell eingegeben, weil ich nicht herausfinden konnte, wie zu kopieren nur eine Zeile in Chrom – Reddy

+3

Es ist sehr schwierig zu wissen, WENN Sie Ihren jquery Code ausführen und Sie keinen Kontext bereitstellen, wenn dieser Code ausgeführt wird. Wenn Sie ein kleines Beispiel erstellen können, das Ihr Problem veranschaulicht (ich weiß, es könnte schwierig sein, aber Sie können einige Dinge fest codieren), ist das sehr nützlich, um eine sehr gute Antwort zu erhalten. – ProgrammerV5

Antwort

0

Das Problem scheint also etwas mit der Tatsache zu tun, dass das Kind, auf das ich zugreifen möchte, sich in einem iFrame befindet und offenbar nicht auf extern dynamisch hinzugefügten Inhalt innerhalb eines iFrames zugreifen kann. Ich nehme an, dass JQuery nach der Inspektion nur bemerkt, was drin ist, da es gezwungen ist, die Elemente zu entdecken.

Verwandte Themen