/ / Elemente innerhalb eines jQuery-Objekts suchen - Jquery

Elemente in einem jQuery-Objekt suchen - jquery

Lassen Sie mich damit anfangen, dass ich nicht 100% ig bin, wie ich es handele, das ist richtig, aber trotzdem

Ich lade HTML aus einer Datei in einen String - und platziere diesen String innerhalb eines Jquery-Objekts.

Mein HTML-Code (Beispiel):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
...
<link href="template.css" rel="stylesheet" type="text/css" />
</head>
<body>

<img src="/images/img.png"/>

...

</body>
</html>

Das obige ist in einer Variablen namens htmlstr:

var htmlstr = theFunctionThatLoadsMyHTMLString();
$html = $(htmlstr);

Jetzt gehe ich durch das HTML und versuche, einige Änderungen vorzunehmen, bevor ich es in einen iframe stecke.

Das funktioniert perfekt für Bilder:

 $html.find("img").each(function(){
// do something
});

Wenn ich jedoch versuche, auf das LINK-Tag zuzugreifen (um css href zu ändern), wird kein Link gefunden.

 $html.find("link").each(function(){
// do something
});

Um zu versuchen, das Problem zu debuggen, habe ich diesen Code geschrieben:

$html.find("*").each(function(index){
addline(index+": "+this.tagName+"");
});

Das für jedes Element gefundene HTML-Tag wird gedruckt (addline ist eine Funktion, die dies tut). Das bekomme ich:

0: IMG
1: DIV
2: DIV
....

Es sieht also so aus, als ob es vielleicht aus irgendeinem Grund in KÖRPER anfängt und den Header ignoriert?

Was mache ich hier falsch?

Ich werde nicht lügen. Ich bin nicht 100% sicher, wie der $ ("Code hier") in jQuery funktioniert.

Antworten:

1 für die Antwort № 1

Hier kann es zu einem browserspezifischen Effekt kommen. Das jQuery-Dokumente sagen

Bei der Übergabe von komplexem HTML können einige Browser dies tunkein DOM erzeugen das repliziert exakt den bereitgestellten HTML-Quelltext. Wie erwähnt verwenden wir die .innerHTML-Eigenschaft des Browsers, um den übergebenen HTML-Code zu analysieren und einzufügen es in das aktuelle Dokument. Während dieses Vorgangs einige Browser filtern Sie bestimmte Elemente wie z <html>, <title>, oder <head> Elemente. Daher können die eingefügten Elemente nicht repräsentativ sein der ursprünglichen Zeichenfolge übergeben.


0 für die Antwort № 2

Das Problem wurde in einem JSFiddle reproduziert und gefundendass Sie den Link tatsächlich auswählen können, wenn Sie dessen Position im Array kennen. Vorausgesetzt, dass es sich um einen festen HTML-Code handelt, können Sie diesen verwenden, um den Link zu finden. Ich konnte jedoch keinen Selektor verwenden, um es zu finden, was seltsam ist ...

http://jsfiddle.net/66UjW/

Wenn Sie beabsichtigen, dies zu verwenden, sollten Sie es auf Crossbrowser-Probleme testen, da der Kopf des Browsers möglicherweise nicht alle gleich ist.