$('.Schedule .Full input').each(function(i)
{
var controls = $('.Morning input, .MorningPart input, .Afternoon input, .AfternoonPart input', $(this).parents('.Schedule'));
alert(controls.length + " Conflicting Controls\n"+
$(this).parents('.Schedule').attr('id') + " Parent");
});
Wenn ich diesen Code in Firefox laufe die erste Ausführung dieser Funktion erzeugt eine Warnung sagen folgenden:
17 Widersprüchliche Kontrollen
Montag Elternteil
die exakt gleiche Seite läuft in IE 6 oder 7 erzeugt eine Warnung sagen folgende:
45 Widersprüchliche Kontrollen
Montag Eltern
Firefox richtig ist, gibt es nur 17 in Konflikt Kontrollen. Die 45, die IE identifiziert, sind Steuerelemente, die kein Nachkomme von "Montag" sind. Wenn ich "Monday" als Kontext für die $() -Funktion angegeben habe, warum gibt IE Steuerelemente außerhalb davon zurück?
Ich glaube .parents () gibt im Grunde die gesamte Struktur des Dokuments über dem aktuellen Knoten zurück, einschließlich des Body-Knotens der obersten Ebene. Dies ist vs .parent(), das nur die direkten Eltern zurückgibt. Wenn 'dies' der Eingabeknoten ist, haben Sie möglicherweise mehr Glück mit $ (this) .parent(). Parent(). Parent() (obwohl es ziemlich fugig aussieht und müsste geändert werden, wenn sich Ihre HTML-Struktur ändert) –