2016-03-28 2 views
1

Ich habe eine XML-Antwort von einer API-Anfrage in einem JQuery-Objekt (namens $ xml) gespeichert. Um zu den Informationen zu gelangen, die ich brauche, benutzte ich: $xml[0].childNodes[0].childNodes[1].childNodes[1].textContent. Dies funktioniert bei Chrome, Firefox und IE10 +, aber IE = < 9 repräsentiert das Objekt nicht auf die gleiche Weise.Wie durchqueren Sie die DOM-Elemente eines JQuery-Objekts in IE7?

Code, der in Chrome funktioniert, Firefox und Internet Explorer 10 +:

$(function() { 
    $.get('proxy.php', function(data) { 
    if (typeof data == 'string') { 
     console.error(data); 
    } else { 
     var test = $.parseXML(data); 
     var $xml = $(data); 
     console.log(data); 

     alert($xml[0].childNodes[0].childNodes[1].childNodes[1].textContent); 
    } 
    }); 
}); 

Im Debugger in IE zeigt es den [0] Index des Arrays des Objekts - aber wo anderer Browser zeigt dann Nachkommen wie 'Kinder' und 'childNodes' - niedriger IE zeigt nur 0: [object], ohne Option zu erweitern und zu sehen, innerhalb der [object].


Wie kann ich den Inhalt meiner JQuery-Objekt in einer Art und Weise durchqueren, die in IE7 + sowie Chrome und Firefox funktioniert?

Antwort

0

Eine andere Methode gefunden, dies zu erreichen, die browserübergreifender kompatibel und einfacher zu lesen ist.

$(function() { 
$.get('proxy.php', function(data) { 
    if (typeof data == 'string') { 
    console.error(data); 
    } else { 
    var test = $.parseXML(data); 
    var $xml = $(data); 
    console.log(data); 

    alert($xml.find("Description").text()); 
    } 
}); 
}); 

Mit .find() mit dem NodeNames der XML-Felder ermöglicht flexiblere Verfahrgeschwindigkeit der Antwort. .html() funktioniert in Ordnung mit Chrome und Firefox (und vielleicht Edge), aber ältere IE benötigt .text(), um gewünschte Informationen zurückzugeben.

Dies funktionierte für mich und ich bin in der Lage zu if..else mit dem Wert von "Description" oder einem anderen Parameter der XML-Antwort, die ich an Funktionalität anhängen möchte.