Ich erhalte inconsistant Ergebnisse in allen Browsern mit dem folgenden Test:Jquery Selector Fremdheit - ist das ein Fehler oder mache ich es falsch?
============ test.html ===========
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
</head>
<body>
<script>
var xml;
$.ajax({
type: "GET",
url: "data.xml",
success: function(data){
var node = $("CI:first", data);
var query1 = $("T TX", node).length;
var query2 = $("T", node).find("TX").length;
var msg = '$("T TX", node).length: ' + query1;
msg += "\n";
msg += '$("T", node).find("TX").length: ' + query2;
alert(msg);
}
});
</script>
</body>
</html>
============ data.xml ===========
<?xml version="1.0" encoding="ISO-8859-2"?>
<CNs>
<CI>
<T>
<TX></TX>
</T>
</CI>
<CI>
<T>
<TX></TX>
</T>
</CI>
<CI>
<T>
<TX></TX>
</T>
</CI>
</CNs>
Was geschehen soll, ist dies:
- xml Last über Ajax Anruf
- wählen einen XML-Knoten:
$("CI:first", data);
- wählen einen Knoten innerhalb dieser Knoten:
$("T TX", node)
- Sekunden Auswahl nur mit einem "TX" tag
jedoch in IE6 und IE8 (haven‘kommen sollte t versuchte IE7), scheint die zweite Auswahl den "Knoten" -Kontext zu ignorieren und das gesamte XML-Dokument zu durchsuchen. Der Test läuft wie erwartet in FireFox und Safari. So funktioniert es in IE $("T", node).find("TX")
. Irgendwelche Erklärungen warum $("T TX", node)
funktioniert nicht in IE?
Antwort von John Resig auf der JQuery-Dev-Liste, die besagt, dass Sie ein Ticket dafür machen. Also http://dev.jquery.com/ticket/4748 – morgancodes
habe ich alles bestätigt was du gesagt hast und es auch mit IE7 versucht. Kein Glück ... seltsam. Es ist definitiv, dass der Kontext ignoriert wird. Ich habe Variationen mit dem gleichen Ergebnis .eq (0) oder mit dem Element für den Kontext versucht. Nada. –
@morgancodes Interessanter Bugfind. – artlung